Graph QL もしくは REST APIで、特定のcollectionの商品を全て取得したい。

Graph QL もしくは REST APIで、特定のcollectionの商品を全て取得したいです。

調べていたのですが、Graph QLでは、下記のように1つのコレクションに対して、商品個数を決めて商品情報を取得しているかと思います。

全ての商品IDを取得したい場合はどのような方法で取得すれば良いですか?

よろしくお願いいたします。

collection(id: "${collectionId}") {
        products(first: 250) {
          edges {
            node {
              id
            }
          }
        }
      }

補足

▼達成したいこと

カートに入っている商品が特定コレクションに入っていたら、という条件を設けたいです

→liquidではなく、カスタム・公開アプリの前提でお願いいたします。

@Taito

下記の投稿を拝見する限りでは、2023年4月13日の時点では、1度のクエリで全ての商品を取得する方法はなかったようです。

https://community.shopify.com/c/graphql-basics-and/graphql-api-get-all-active-and-published-products-by-collection/td-p/2018636

そして、おそらく今もないので、

下記のヘルプのようにpageinfoを利用して、

クエリを何度か叩く必要がありそうです。

https://shopify.dev/docs/api/usage/pagination-graphql#forward-pagination

また、

即時性はないと思うのですが、BulkOperationを利用するという方法もあるかもしれません。

https://shopify.dev/docs/api/usage/bulk-operations/queries

上記、ご存知の上でのご質問でしたら、本回答はスルーしてください。

ご参考まで。

(キュー田辺)

1 Like

@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);
  }

今の所取得できているので、問題ないかと考えているのですが、何か問題点等ありそうでしょうか。

@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

@Qcoltd

失念しておりました。

ありがとうございます。

このあと250商品以上をテストする予定でございますので、また分かりましたらこちらに記載させていただきます。

詳細の情報までありがとうございます。

1 Like

@Qcoltd

お世話になっております。

ご返信お待たせいたしました。

250商品以上試したところやはり不可能でした。

Graph QLを使用して、取得しようと思います。

その際、現在うまく行っていないので、またご質問させていただくかと存じます。

よろしくお願いいたします。

1 Like