FROM CACHE - jp_header

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

解決済

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

Suzuki144
Shopify Partner
10 0 3

商品やコレクションを比較的沢山(多分何百という程度になる予定です)追加したいと思っていて、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のサポートに連絡して、権限を得ることができるのかもしれないと思いました。こちらは試していません。

1 件の受理された解決策

junichiokamura
Community Manager
1201 280 509

成功

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

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

 

Senior Partner Solutions Engineer

元の投稿で解決策を見る

4件の返信4

junichiokamura
Community Manager
1201 280 509

成功

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

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

 

Senior Partner Solutions Engineer
Suzuki144
Shopify Partner
10 0 3

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

Suzuki144
Shopify Partner
10 0 3

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

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

junichiokamura
Community Manager
1201 280 509

すいません、再度投稿を見直したのですが、ひょっとすると大元の部分を勘違いされているかもしれません。

販売チャネルとは、Shopifyからみた時の楽天などの外部のモールやPOS、自社スマホアプリなどのオンラインストア以外の販売経路を指すもので、それらの実装にStorefront APIが使われます。
ですので、Storefront APIは販売チャネル化しないと利用できず、これは通常、Public App(アプリストアに公開するもの)やPrivate Appのみとなります。

販売チャネル化したアプリには、共有いただいているPublishingのAPIがありますが、このPublishingの意味は、上記の例ですと、Shopify->楽天、POS、自社スマホアプリに商品を文字通り公開するもので、これは通常Public Appしか使えません。 共有いただいているPlusプランの記述は、これをPrivate Appで行いたい場合は、Plusの契約が必要ということです。

ですので、「オンラインストア」というのが、自身のShopifyストアのことを指すのであれば、通常のAdmin APIで商品やコレクション登録が可能ですが、こちらの認識はあっていますでしょうか?

なお、大量データの一括登録には以下のBulk Operation APIがあるので、そちらをご利用ください。

https://shopify.dev/api/admin/graphql/reference/bulk-operations

 

Senior Partner Solutions Engineer