Shopify APIを利用して在庫管理を行うShopify APIで在庫を自動更新する仕組みを調査・実装してみた

最近、Shopifyで販売している商品の在庫を、一定間隔で指定数に自動更新してほしいという依頼を受けました。
そこで、Shopify APIの仕様や利用方法について詳しく調査してみました。

Shopifyの在庫を更新するには?

Shopifyの商品在庫を更新するには、**Shopify API(GraphQL)**を使用します。

公式ドキュメントは https://shopify.dev/api にあります。

Shopify APIを利用するには?

APIを利用するには、アクセストークンの取得が必要です。

アクセストークンはShopifyの管理画面からアプリを作成し、スコープを設定することで取得可能です。

在庫に関するAPIは?

2022年9月時点で、在庫を「直接更新」するAPIは提供されていないようです。

そのため、現在の在庫を取得 → 必要数を計算 → 追加分を加算する、という形で更新を行います。

Shopify APIを利用する

まずは、商品ごとの inventoryItemId(在庫アイテムID)と SKU を取得します。

inventoryItems

まずは[inventoryItems]を利用して商品の「inventory item Id」「SKU」を取得します。

PHPでのリクエスト例(GraphQL):

レスポンス例:

[id]がinventory item Id、[sku]がSKUとなります。

※SKUは必須ではないため、事前にユニークな値を登録しておくと扱いやすくなります。

productVariants

続いて、商品バリアントから**現在の在庫数(inventoryQuantity)**を取得します。

在庫調整には「ロケーションID」が必要です。以下のクエリで取得できます。

locations

複数ロケーションを管理している場合は、対象商品がどのロケーションに属しているかの割り当ても必要ですが、今回は1件のみのため割愛します。

全ての情報が取得できたら、現在の在庫数から加算したい在庫数を商品ごとに計算し「inventory item Id」を利用して在庫を加算していきます。

inventoryBulkAdjustQuantityAtLocation

加算処理は以下のMutationで実施します。

クエリーは下記のように記載します。「availableDelta」に加算したい在庫数を設定、「inventoryItemId」「locationId」には取得したIDを記載します。

正常に更新されると、available が加算された数値として返ってきます。

Shopify APIを利用してみて

今回、初めてShopify API、そしてGraphQLを使って実装しました。

結論としては、構文のクセこそあるものの、構造を理解すれば非常に便利で柔軟性の高いAPIだと感じました。

ただし、Shopifyでは在庫を直接「この数に設定する」APIは用意されていない点に注意が必要です。
そのため「差分加算」で在庫を調整する必要があり、やや回りくどく感じました。

また、在庫編集に関する情報はあまり多くなかったため、情報共有・備忘録としてこの記事をまとめました
同様の課題に取り組む方の参考になれば幸いです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)