FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

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

解決済

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

Taito
Shopify Partner
13 0 2

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

 

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

 

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

 

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

 

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

 

 

補足

▼達成したいこと

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

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

1 件の受理された解決策

Qcoltd
Shopify Partner
1102 450 445

成功

@Taito 様

 

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

https://community.shopify.com/c/graphql-basics-and/graphql-api-get-all-active-and-published-products...

 

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

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

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

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

 

また、

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

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

 

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

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/

元の投稿で解決策を見る

5件の返信5

Qcoltd
Shopify Partner
1102 450 445

成功

@Taito 様

 

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

https://community.shopify.com/c/graphql-basics-and/graphql-api-get-all-active-and-published-products...

 

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

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

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

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

 

また、

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

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

 

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

 

ご参考まで。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/
Taito
Shopify Partner
13 0 2

@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%...

 

  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
Shopify Partner
1102 450 445

@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 にお問い合わせいただくか、

でしょうか。

 

大した情報がなく恐縮です。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/
Taito
Shopify Partner
13 0 2

@Qcoltd 様

 

失念しておりました。

ありがとうございます。

 

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

 

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

Taito
Shopify Partner
13 0 2

@Qcoltd 様

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

 

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

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

 

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

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

 

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