0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

shopify-api-ruby の ShopifyAPI::ResourceName.all でデータを全件取得する方法

Last updated at Posted at 2022-09-18

背景

  • Shopify の 公式 Ruby 用 API クライアント「shopify-api-ruby」を使って Shopify 各リソースのデータを全件取得したい。
  • ShopifyAPI::ResourceName::all を実行しても一部データしか取得できなかった。
# 例) 商品データを全件取得したい
products = ShopifyAPI::Product.all
products.size

=> 50

原因

どうやら、all メソッドで取得できるのは最初の50件までみたいです。(おそらく裏側で limit 句みたいなものが働いている?)

対策

fetch_next_page メソッドを使う事で次の50件が取得できました。

products.fetch_next_page

また、次のデータが存在するかどうかは next_page? メソッドで確認できます。

products.next_page?
=> true

したがって、全てのデータを取得したい場合、次のようなコードでいけるはず。

product_aray = []

products = ShopifyAPI::Product.all
product_array.concat(products)

while products.next_page?
  products = products.fetch_next_page
  product_array.concat(products)

  sleep 1
end

product_aray.size
=> 2500

まとめ

以上、shopify-api-ruby の ShopifyAPI::ResourceName.all メソッドでデータを全件取得する方法でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?