FROM CACHE - jp_header

GraphQLで商品をオンラインストアに登録するには

sana7
Shopify Partner
4 0 0

過去にも類似の質問がありましたが、解決に至ったのかわからなかったの再度、質問させて頂きます。

過去の質問

GraphQLの

mutation productCreate

を、利用して、商品を登録しています。

その際に、権限は付与できるものはすべて付与しております。

商品を登録する際に、管理画面の設定の「販売チャネルとアプリ」の中のチャンネルを選択したいと考えております。

productCreateのドキュメントを読むと、productPublicationsや、publicationsは、非推奨(deprecated)となっており、代わりに、PublishablePublishが推奨されています。

この、PublishablePublishのドキュメントを読むと権限に、write_publicationsが必要となっております。

実際に試しても、権限がないとメッセージが表示されます。

Access denied for availablePublicationCount field. Required access: `read_publications` access scope. This scope is currently available only to custom apps installed on Shopify Plus stores. Contact Shopify Partner Support to enable

また、Shopify パートーナーに連絡して、read_publicationsを有効にしてもらえないか、頼んでみましたが、Shopify Plusでしか、有効にできないので、将来のバージョンアップを待つように返事を頂きました。

そのため、他に何か方法があれば、教えていただけないでしょうか?

私なりに考えたのは、過去の質問では、REST APIを利用したら、「オンラインストア」にはチェックされていたと記載がありました。そのため、GraphQLで新規登録を行い、REST APIで、編集を行えばできるのか? 考えております。

8件の返信8
Qcoltd
Shopify Partner
773 298 296

https://community.shopify.com/c/shopify-apis-and-sdks/graphql-api-productcreate-does-not-publish-pro...

こちらの投稿でも、

質問者様が挙げられている方法を回答されている方が多いようです。

  • 非推奨ではあるが、publicationsを使用する (回答では"published"と言っていますが、depreciatedと言っているので、publicationsのことかと思います。)
  • PublishablePublishを使用する
  • REST APIを使用する

私が確認した限りでは、

非推奨にはなっているのものの、

現時点でのAPIの最新バージョン「2022-07」で、publicationsが機能するようですので、

「2022-07」を使い続ける限り、

publicationsを使用しても問題ないのかもしれません。

(念の為、次のリリース候補である「2022-10」でも試したところ、今のところ、publicationsが機能しました。あくまで、今のところ、で、リリース時にどうなるかは分からないのですが。)

こうすれば問題ない!という回答ではなく恐縮です。

何かの参考になれば幸いです。

(キュー田辺)

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

ご回答ありがとうございます。

> 非推奨ではあるが、publicationsを使用する (回答では"published"と言っていますが、depreciatedと言っているので、publicationsのことかと思います。)

試したところ、

「Access denied for productCreate field. Required access: `write_products` access scope.」

となりました。

田辺様の環境は、Plusではないでしょうか?

下記にもありましたが、Plusの機能のような気がします。

https://community.shopify.com/c/shopify-apis-and-sdks/productpublications-access-denied/td-p/1674488

Qcoltd
Shopify Partner
773 298 296

@sana7

>田辺様の環境は、Plusではないでしょうか?

いいえ、Plusではありません。

Shopifyの契約プランで言いますと、プレミアムです。

しかし、私は、

Shopify GraphiQL应用をストアにインストールして確認しています。

インストール時に、権限設定ができるので、その際に、

このアプリでしか設定できない権限も設定したのかもしれません。

ところで、

> 「Access denied for productCreate field. Required access: `write_products` access scope.」

write_productsは、Plusでなくとも使用できるアクセススコープだと思うのですが、

write_productsは、設定されていないでしょうか?

(キュー田辺)

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

ご回答ありがとうございます。

権限につきましては、すべての権限を付与しておりました。

「設定」ー「アプリと販売チャネル」ー「ストア用のカスタムアプリを管理する」

対象のカスタムアプリを開き、「管理画面APIの統合」から、権限は設定させて頂きました。

publications を利用すると、上記エラーが発生致します。

ストアアプリとカスタムアプリの違いによって、利用できる機能が変わったきたりするのでしょうか。

Qcoltd
Shopify Partner
773 298 296

@sana7

なるほどです。

貼っていただいたコミュニティの書き込みでも、

使用できないとのことですし、

実際のアプリからのコールではpublicationsは拒否されてしまう、ということなのでしょうね。

あまり意味がない情報かもしれませんが、

APIのバージョンを2022-04に変更すると、

使用できるかもしれません。

screenshot_20220927_01.pngscreenshot_20220927_02.png

ちなみに、2022-07の波線にマウスオーバーすると下記の情報が表示されます。

Type "ProductInput" does not have a field "publications"

もしかしたら、

2022-07から使用できなくなったのかもしれません。

(しかし、実行しても上図通り、エラーは出ないのですが。。。このアプリ自体がそこまで作り込まれていないのかもしれません。)

しかし、

2022-04でもし使用できたとしても、

2022-04がいつまでサポートされるか分かりませんし、

REST APIを使用されるのが無難なのかもしれません。

(キュー田辺)

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

@sana7

カスタムアプリを使用してのproductCreateを試してみました。

publicationsを使用すると、おっしゃる通り、下記のエラーが返ってきました。

Access denied for productCreate field. Required access: `write_products` access scope.

APIのバージョンは関係なく、発生するので、使用できない、ということで間違い無いかと思います。

誤情報、大変失礼しました。

代わりに、REST APIを使用してみましたので、ご報告です。

https://shopify.dev/api/admin-rest/2022-07/resources/product#post-products

こちらを実行してみたところ、

販売チャンネルが登録された状態で商品を作成できました。

現時点ではREST APIから作成するのが良さそうです。

なお上記は、REST APIで商品を作成する、というお話で、

ご質問にある、GraphQLで作成した商品の販売チャンネルをREST APIで変更できるか、

には回答できていません。

必要であれば調査してみますので、

その場合はお知らせください。

(キュー田辺)

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

田辺様

ご回答ありがとうございます。

GraphQLを利用する前には、REST APIを利用していました。

ただ、REST APIを利用すると、メタフィールドが登録されてないみたいで、それで、GraphQLを利用することに落ち着きました。

試してないですが、GraphQLで登録した後に、REST APIで、販売チャンネルの更新ができないか、確認してみようと思います。

Qcoltd
Shopify Partner
773 298 296

@sana7

承知いたしました。

おそらく、

下記の方法も既に思いついていらっしゃると思うのですが、

もし、REST APIで販売チャンネルだけを設定することができない場合は、

REST APIで商品登録をしてから、

GraphQL APIでメタフィールドを設定する、

というやり方もありそうです。

これが採用できない理由もお有りだと思うのですが、

念のため、共有まで。

(キュー田辺)

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