Googleシートを在庫マスターにして、Shopifyへ同期する運用をしていると、ある日こんな疑問にぶつかります。「Shopifyには登録されているのに、シート側には無いSKUがある時、これをどう扱えばいいんだろう?」と。
シート同期の設定画面には、たいてい「シートに無い行はShopify上で在庫0にする」というオプションがあります。これは便利な機能ですが、選び方を間違えると、取扱中止のはずだった商品が「ある日突然在庫が復活」してしまったり、逆に「シートから消えただけのSKU」が販売停止になってしまったりします。今回は、この欠落行の扱いについて、判断軸を整理してみます。
「シートに無い行」が意味すること
まず、「シートに無い行」が何を意味するか、整理してみましょう。シートに登録されているのは、ある時点で「在庫管理の対象」と見なされているSKUのリストです。一方、Shopify側には、過去に登録されたすべてのSKUが残っています。これらを比較した時、Shopifyには存在するけれどシートには無いSKUが、必ず一定数出てきます。
このギャップは、ストア運営が続く限り発生し続けます。商品の入れ替え、リブランディング、廃番、季節商品の整理——様々な理由でシートのSKUリストは変動します。それに対して、Shopify側の商品データは「過去に売っていた商品」も残り続けるので、両者の差は時間とともに開いていきます。
ありうるケース
「シートに無い」という同じ状態でも、その背景には全く違うシナリオが隠れています。代表的な2つのケースを見てみましょう。
取扱中止のケース
一つ目は、その商品をもう取り扱わない、と決まったケースです。仕入先が生産中止、在庫が完売してリピートしない、シリーズ全体を入れ替えた——理由は様々ですが、要するに「もう売らない」という判断がついている状態です。
このケースなら、シートから行が消えていることは「意図的な削除」を意味します。Shopify側の在庫を0にして、お客様が買えない状態にするのが正しい挙動です。商品ページ自体を残しておきたい場合(SEOやアーカイブ目的)も多いので、削除ではなく「在庫0」にする、という運用は実は理にかなっています。
単なる漏れのケース
二つ目は、シートから行が消えていることが「事故」のケースです。誰かが誤って行を削除した、フィルタを掛けたまま別シートにコピーした、Apps Scriptのバグで一部の行が落ちた——理由は様々ですが、「本当はその商品を売りたい」のに「シートから消えてしまった」状態です。
このケースで「シートに無い行は在庫0」を有効にしていると、悲劇が起きます。本当は売りたい人気商品が、シートの一時的な不具合で全部在庫0になり、売上が止まります。気づいた頃には、機会損失が積み上がっています。
設定の選び方
では、どう設定すべきでしょうか。一概に正解はありませんが、ストアの規模と運用習熟度に応じて、3つのアプローチがあります。
- 011. 欠落行は触らない(保守的アプローチ) : 安全だが、取扱中止の商品が在庫を持ったままになる
- 022. 欠落行は在庫0にする(積極的アプローチ) : きれいだが、シートの漏れが即時に売上停止になる
- 033. 欠落行は警告だけ出す(中庸アプローチ) : 同期前にレポートで確認し、人間が判断する
おすすめは、運用が安定するまでは1番(触らない)、安定してきたら3番(警告)、シートの管理体制が完璧になったら2番(自動ゼロ化)への移行です。いきなり2番に設定すると、シート運用の小さなミスが大きな事故に直結します。
Shopifyの管理画面では、商品ステータスを「下書き」「アーカイブ」に変える方法もあります。取扱中止の商品を在庫0にするだけでなく、「アーカイブ」に移すと、商品一覧から見えなくなり、運用がすっきりします。同期アプリの「欠落行ゼロ化」と、Shopify側の「アーカイブ」を組み合わせると、より明確な区別ができます。
事故を防ぐ運用ルール
どのアプローチを選ぶにせよ、事故を防ぐためのルールはあった方がいいです。いくつか紹介します。
- シートに「アクティブ」フラグ列を作り、取扱中止は行削除ではなくフラグで管理する
- 行削除をする時は、必ず別シートに「廃番ログ」を残す
- 同期前に「行数」をチェックし、前回より一定割合以上減っていたら警告
- シート更新後は、最初の同期だけ「ドライラン(変更内容のプレビュー)」で確認する
- 月次で「Shopifyにあるけどシートに無い」リストを棚卸しする
特におすすめなのが、1番目の「アクティブフラグ列」です。シートから行を削除する代わりに、A列の隣に「ACTIVE」列を作り、取扱中止は`FALSE`を入れるだけ。同期側では`ACTIVE=TRUE`の行だけを対象にすれば、シートには行が残ったまま、Shopify上では在庫0になります。後から「あの商品はいつ廃番にしたっけ」と振り返る時にも便利です。
欠落行の扱いは、同期設定の中でも特に「最初の判断」が後の運用を大きく左右する項目です。慌てて決めず、自分のストアの運用習熟度と相談しながら、徐々に厳しい設定へ移行していく——その方が、長く付き合える同期運用になります。
シートとShopifyを繋ぐ仕組みは便利ですが、便利さの裏には常に「意図しない結果」のリスクがあります。だからこそ、こうした細かい設定の意味を理解しておくことが、結果的にストアを守ることになります。