← inaro.devShopify学習ツール
16-05

商品データを読む

商品・バリエーション・メタフィールド・メディアを条件付きで取得し、全件を取り切れる

最終確認: 2026-09

解説

受託の現場でなぜ必要か: この回では、商品・バリエーション・メタフィールド・メディアを条件付きで取り、全件を取り切れるようになります。
受託では「全商品のSKUと在庫を出して」が最も多い依頼のひとつで、1回に取れる上限とコストの掛け算を知らないと、途中で切れるかレート制限に当たります。

全件はどう取るか(カーソルページネーション)

一覧はfirstafterで進み、pageInfo { hasNextPage endCursor }で続きがあるかを判定します。
オフセット(何件目から、という指定)はありません。
1回に取れるのは250件までです。
続きは、endCursor(続きの位置を示す文字列)を次のafterに渡して取ります。

条件はどう書くか(query引数)

status:activetag:salevendor:ABCupdated_at:>2026-01-01のように書きます。
AND / OR / -で組み合わせられます。
管理画面の検索と同じ構文です。

メタフィールドとメディアはどう取るか

メタフィールド(商品に足した独自の項目)は、metafield(namespace:, key:)で1件、metafields(first:, namespace:)で一覧を取ります。
メディア(画像や動画)はmedia(first:)で取りますが、種類ごとに型が違います。
... on MediaImage { image { url } }のように、インラインフラグメントで型ごとに指定します。

発展:ネストした接続とコスト

products(first: 50) { variants(first: 100) { … } }のように接続を入れ子にすると、コストが掛け算になります。
1クエリの上限は1,000ポイントです。
必要なフィールドだけ選んでください。
全件処理はループが前提なので、取得件数をログに出し、途中で止まったらendCursorから再開できるようにします。

ステップ1 / 2

ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。