APIで商品やコレクションをオンラインストアに登録するには

解決済
Suzuki144
観光客
6 0 2

商品やコレクションを比較的沢山(多分何百という程度になる予定です)追加したいと思っていて、API経由でやることを考えています。実際試してみたのですが、販売チャネルへの登録については、今のスタンダードプランだとGraphQLではできないように思います。切り抜け方としてはGraphQLではなく、RESTを使えば良さそう、と思いますが、何か自分に勘違いがあるかもしれません。

やってみたことを書きますが、もし、別にこういうやり方があるよ、というのをご存知でしたらご教授ください。

上に書いた「販売チャネルへの登録」というのはこのあたりのことです。
https://help.shopify.com/ja/manual/online-sales-channels
https://help.shopify.com/ja/manual/products/collections/make-collections-available

私が考えてやったことを以下に書きます。

まず商品やコレクションをAPI経由で作成する場合、GraphQLとRESTそれぞれ以下のAPIがあります。

GraphQL collectionCreate
GraphQL productCreate
REST Collection
REST Product

このうちGraphQLを使って商品やコレクションを新規に登録した場合、販売チャネルは未設定の状態

スクリーンショット 2021-01-20 16.30.24.png

となりますが、登録する商品やコレクションはオンラインショップで使いたいので、販売チャネルの設定をしないとならないと思います。

これをAPIで設定したい場合、GraphQLでは、publishablePublish を呼ぶ必要があると思います。しかし、publishablePublishを呼ぶには write_publications が必要で、それはShopify Plusプランでプライベートアプリという制限があるように書かれています。
https://shopify.dev/docs/admin-api/graphql/reference/products-and-collections/publishablepublish

これは困ったなと思ったのですが、RESTを使って商品やコレクションの新規登録をしてみたところ、デフォルトで「オンラインストア」に登録ずみとなっていました。

スクリーンショット 2021-01-20 16.50.04.png

つまり、ここまでのことから、商品やコレクションを追加するのはRESTを使うべきと考えました。

今のところそういう認識なのですが、もしも勘違いしているようなところがあれば、ご指摘ください。できればGraphQLだけでやってしまえたら良いなあと思っています。

なお、Shopify Plusプランに変更するのは、かなり費用が変わってしまうはずなので、気軽にはできないのですが、英語のコミュニティーの書き込み https://community.shopify.com/c/Shopify-APIs-SDKs/Product-created-via-Admin-API-quot-unavailable-on-... を見ると、Shopifyのサポートに連絡して、権限を得ることができるのかもしれないと思いました。こちらは試していません。

0 件の「いいね!」
junichiokamura
Community Manager
Community Manager
1077 248 421

成功

多分、RESTと同じ挙動はこちらだと思うのですがいかがでしょうか?

https://shopify.dev/docs/admin-api/graphql/reference/products-and-collections/publishablepublishtocu...

 

Technical Partner Manager, Japan
0 件の「いいね!」
Suzuki144
観光客
6 0 2

ご教授ありがとうございます。使ってみたところ期待通りでした。

0 件の「いいね!」
Suzuki144
観光客
6 0 2

と、思ったんですが、訂正です。

目的としては「オンラインストア」で見れるようにしたいのですが、このAPIではこのAPIを呼び出したアプリケーションがもし、ストアフロントAPIをアクティブにしていれば、そこに対してのみ出品されるという機能であるように思います。

0 件の「いいね!」