Liquid、JavaScriptなどに関する質問
REST API エンドポイント /admin/api/2020-01/products.json
にアクセスし、Product 情報を取得しようとしています。
一度のリクエストでの取得上限は250であるため、
最後の行のproduct idを取得し、2回目以降のリクエストに since_id を指定してループ処理しています。
これで全商品が取得できるかと思いきや
どうも一部欠落しているようです。
コードが悪いのかと思い、ブラウザでURLを直接入力してテストしてみてもやはりレスポンスの数が
Product の総数と一致しません。
REST API エンドポイント /admin/api/2020-01/products/count.json
でproductの総数をチェックしてみたところ、810アイテムでしたが
上記のsince_idで1ページずつチェックした結果、2ページ + 86アイテムで 586アイテムしか取得できませんでした。
なにか他に全商品を取得する方法はありますでしょうか。それとも間違いを犯してしまっているのでしょうか。
解決済! ベストソリューションを見る。
成功
自己解決しました。
やはりどうやら Since_id というのは そのidから先の商品って感じでもなさそうです。
なぜこんな仕様なのか、なにに使うのかイメージがわきませんんが。。。
すべての商品情報が欲しい場合は
エンドポイント admin/api/2020-01/products.json
にアクセスした際にレスポンスヘッダーに返される値に含まれる
Link情報を使用します。
内部的にページネーション用のオブジェクトが作られている?らしく
このリンクには現在表示されているページの前後のページ用のURLが記載されています。
注意すべき点は、僕もハマったのですがphpなどで受け取ったレスポンスヘッダーを
文字列で出力してみても、このLinkに含まれるURL文字列は見た目には表示されません。
これでURL取得できないやん!!っとなりますが、ソースコードで見るとたしかに入ってますので安心してください。
なので情報としては取得できているので、あとは不要な部分をカットしてURLのみにして
イテレーションしてあげれば全商品の取得が可能になります。
なにかのお役に立てれば幸いです。
成功
自己解決しました。
やはりどうやら Since_id というのは そのidから先の商品って感じでもなさそうです。
なぜこんな仕様なのか、なにに使うのかイメージがわきませんんが。。。
すべての商品情報が欲しい場合は
エンドポイント admin/api/2020-01/products.json
にアクセスした際にレスポンスヘッダーに返される値に含まれる
Link情報を使用します。
内部的にページネーション用のオブジェクトが作られている?らしく
このリンクには現在表示されているページの前後のページ用のURLが記載されています。
注意すべき点は、僕もハマったのですがphpなどで受け取ったレスポンスヘッダーを
文字列で出力してみても、このLinkに含まれるURL文字列は見た目には表示されません。
これでURL取得できないやん!!っとなりますが、ソースコードで見るとたしかに入ってますので安心してください。
なので情報としては取得できているので、あとは不要な部分をカットしてURLのみにして
イテレーションしてあげれば全商品の取得が可能になります。
なにかのお役に立てれば幸いです。
最近Shopifyパートナー登録をしまして、早速、以下リンクのドキュメントに従ってphpで商品情報を取得してみたのですが、250を超えて取得できないという同じ事象で悩んでました。
https://www.shopify.jp/blog/partner-shopify-access-token-generate
ナイス情報、有難うございます!
上記ドキュメントのサンプルコードは「https://github.com/nyalex/shopify-generating-api-token-guide」からダウンロードしました。
上記コードでLink情報を取得するには、「functions.php」の55行目
$h = explode(":", $part);
これを
$h = preg_split('/:/', $part, 2);
に書き換えたら、
$limit = 100;
$products = shopify_call($token, $shop, "/admin/products.json", array('limit'=>$limit), 'GET');
echo $products['headers']['Link'];
でLink情報を取得できました。有難うございました。
Since_idの使用方法は未だに不明です・・・
リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024Shopifyは世界で最も革新的なブランドと起業家をサポートしています。個人起業家やあらゆる規模のビジネスの成長を後押しするために、Shopify アカデミーではShopif...
By SarahF_Shopify Mar 22, 2024オンラインストア運営はとてもやりがいのある活動です。新しい注文が入った時の喜びや世界中のお客様とやりとりできる可能性、商品に対して最高のレビューをもらった時の満足感は、毎日の...
By Mina Mar 13, 2024