Taito
1
Graph QL もしくは REST APIで、特定のcollectionの商品を全て取得したいです。
調べていたのですが、Graph QLでは、下記のように1つのコレクションに対して、商品個数を決めて商品情報を取得しているかと思います。
全ての商品IDを取得したい場合はどのような方法で取得すれば良いですか?
よろしくお願いいたします。
collection(id: "${collectionId}") {
products(first: 250) {
edges {
node {
id
}
}
}
}
補足
▼達成したいこと
カートに入っている商品が特定コレクションに入っていたら、という条件を設けたいです
→liquidではなく、カスタム・公開アプリの前提でお願いいたします。
Qcoltd
2
1 Like
Taito
3
@Qcoltd 様
お世話になっております。
ご返信ありがとうございます。
やはりそうですよね。。
ただ、下記記事を参考にコレクション内の商品を取得してみたのですが、いかがでしょうか。
https://community.shopify.com/c/%E6%8A%80%E8%A1%93%E7%9A%84%E3%81%AAq-a/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%A2%E3%83%97%E3%83%AA-remix-%E3%81%8B%E3%82%89%E5%A4%96%E9%83%A8api%E3%82%84admin-api%E3%81%ABgraphql%E3%81%A7%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/m-p/2187861
const { admin, session } = await shopify.unauthenticated.admin(storeUrl);
const collectionProducts = await admin.rest.resources.Collection.products({ session, id: collectionId });
let productIds = [];
if (collectionProducts) {
productIds = collectionProducts.products.map(product => product.id);
}
今の所取得できているので、問題ないかと考えているのですが、何か問題点等ありそうでしょうか。
Qcoltd
4
@Taito 様
そちらの方法ですと、250件を超えて商品情報を取得できるということでしょうか?
最初の投稿に、first:250を指定されていたのでご存知だと思いますが、
https://www.shopify.com/jp/blog/partner-graphql-rate-limits
RESTの場合、レスポンスで返ってくるのは250アイテムまでです。
とありますので、
コレクションに所属する商品の数が250以内なのであれば、
全て取得できるかと思います。
もし、250件を超えて取得できている場合は、
ドキュメントと食い違っているということになりますので、
念のため、Shopifyに問題ないか確認をとった方がいいかもしれませんね。
回答をくれる可能性は低いですがShopifyサポートにお問い合わせいただくか、
https://github.com/Shopify
に記載のある engineering@shopify.engineering にお問い合わせいただくか、
でしょうか。
大した情報がなく恐縮です。
(キュー田辺)
1 Like
Taito
5
@Qcoltd 様
失念しておりました。
ありがとうございます。
このあと250商品以上をテストする予定でございますので、また分かりましたらこちらに記載させていただきます。
詳細の情報までありがとうございます。
1 Like
Taito
6
@Qcoltd 様
お世話になっております。
ご返信お待たせいたしました。
250商品以上試したところやはり不可能でした。
Graph QLを使用して、取得しようと思います。
その際、現在うまく行っていないので、またご質問させていただくかと存じます。
よろしくお願いいたします。
1 Like