Category: CSV・データ処理

  • Product Category列を一括更新する前に見ること

    Product Category列を一括更新する前に見ること

    Shopify商品CSVのProduct Category列は、Googleの製品分類(タクソノミー)に基づく値を入力する列です。Type列(自社分類)とは別物で、商品フィードのgoogle_product_categoryに直接影響します。一括更新前に、列の役割・空欄リスク・タクソノミーの記法を整理しておけば、フィードエラーや広告配信漏れを防げます。


    Type列とProduct Category列は別物

    Shopifyの商品CSVには、分類に関わる列が複数あります。よく混同されるのがType列Product Category列です。

    項目 Type列 Product Category列
    入力内容 自由入力の自社分類名 GoogleタクソノミーのパスまたはID
    TシャツApparel Apparel & Accessories > Clothing > Shirts
    主な用途 ストア内の絞り込み・メニュー表示 Googleショッピング等のフィード分類
    必須か 任意 任意(フィード要件で実質必須の場合あり)

    Type列は「自社でどう呼ぶか」を決める自由入力欄です。一方、Product Category列はGoogleが定めるタクソノミー体系に沿った値を入力する必要があります。

    Product Categoryが影響する先

    Product Category列の値は、商品フィードアプリ(Google & YouTube Channelなど)経由でgoogle_product_categoryとしてGoogleに送信されます。このため、Product Category列の値が不正確だと、次のような問題が起こりえます。

    • Google Merchant Centerで分類エラーが出る
    • ショッピング広告が配信されない
    • パフォーマンスの低いカテゴリに振り分けられる

    Googleタクソノミーの記法を確認する

    Product Category列には、Googleが公開している製品タクソノミーの値を入れます。記法は主に2パターンあります。

    1. パス形式: Apparel & Accessories > Clothing > Shirts
    2. 数値ID形式: 212(上記パスに対応するID)

    どちらでも認識されますが、ストア内で表記を統一することが重要です。混在すると、後からCSVを確認した際に読みにくくなります。

    タクソノミーの注意点

    • 日本語パス(服 & アクセサリー > 服 > シャツ)は、ShopifyのUIでは表示されますが、フィード送信時は英語パスまたはIDで扱われることが多いです。CSV編集時は英語パスかIDを使う方が確実です。
    • Googleは定期的にタクソノミーを更新します。半年前に有効だったパスが、現在は非推奨になっている可能性があります。
    • 階層はなるべく末端(詳細なレベル)まで指定した方が、広告のマッチング精度が上がります。

    空欄のままにするとどうなるか

    Product Category列を空欄にした場合、Shopify側ではエラーになりません。しかし、フィード側では次のような影響が出ます。

    ケース 影響
    フィードアプリが自動補完しない場合 google_product_categoryが空になり、Merchant Centerで警告またはエラー
    アパレル等の「必須カテゴリ」商品 Googleポリシー上、カテゴリ必須。空欄だとアイテムが不承認になる
    フィードアプリがデフォルト値を設定する場合 全商品が同じカテゴリに振り分けられ、ターゲティング精度が下がる

    特にアパレル・アクセサリーは、Googleのポリシー上カテゴリ分類が必須です。これらの商品を扱っている場合は、空欄のままにしないでください。


    一括更新のリスクとよくあるミス

    CSVでProduct Category列を一括更新する際、よく見られるミスをいくつか挙げます。

    1. 英語パスと日本語パスの混在

    同じCSV内で、ある行は英語パス、別の行は日本語パスという状態です。Shopifyは受け付けますが、フィードアプリ側での処理にばらつきが出ます。

    2. 存在しないタクソノミー値の入力

    「これっぽい名前」で入力した値が、実際のGoogleタクソノミーに存在しないケースです。typoや古いタクソノミーの使用が原因です。エラーにならずに無視されることが多く、気づきにくいのが厄介です。

    3. 階層が浅すぎる

    Apparel & Accessoriesで止まっていると、フィードの分類精度が下がります。できるだけ末端まで指定しましょう。

    4. Type列とProduct Category列を同じ値で埋める

    自社分類名(Tシャツなど)をProduct Category列にも入力してしまうミスです。Googleタクソノミーに存在しない値なので、フィードで無効扱いになります。


    更新前のチェックリスト

    一括更新の実行前に、以下を確認してください。

    確認項目 確認内容
    タクソノミーの整合性 入力値が現行のGoogleタクソノミーに存在するか
    表記の統一 英語パスかIDのどちらかに統一されているか
    空欄の有無 アパレル等の必須カテゴリ商品で空欄がないか
    階層の深さ カテゴリパスが末端近くまで指定されているか
    Type列との混同 自社分類名がProduct Category列に紛れ込んでいないか
    バックアップ 更新前のCSVを別名で保存してあるか

    自動で確認できることと人間の判断が必要なこと

    更新前の確認作業は、一部をスクリプトで自動化できます。

    自動で確認できること

    • フォーマットチェック: 入力値が英数字と >& のみで構成されているか(明らかな日本語混入を検出)
    • 空欄検出: Product Category列が空の行を抽出
    • 重複確認: 同じProduct Category値が複数の表記(パスとIDなど)で存在していないか
    • 階層深度チェック: > の数が少なすぎる(階層が浅い)行を抽出

    人間の判断が必要なこと

    • タクソノミーの選択: その商品に最も適したGoogleカテゴリはどれか
    • 境界案件の判断: 2つのカテゴリのどちらに振るべきか迷う商品の扱い
    • ビジネス上の判断: 広告出力を優先して大まかなカテゴリにするか、精度を優先して細かく分けるか
    • 空欄の許容判断: アパレル以外で、意図的に空欄にするかどうか

    Type列 / Product Category列 / google_product_category の関係

    3つの項目がどう繋がっているかを整理します。

    項目 設定場所 値の例 影響先
    Type Shopify管理画面 / CSV トップス ストアの絞り込み・ナビゲーション
    Product Category Shopify管理画面 / CSV Apparel & Accessories > Clothing > Shirts フィードのgoogle_product_categoryに反映
    google_product_category フィードアプリ(自動または手動) Apparel & Accessories > Clothing > Shirts Google Merchant Center / ショッピング広告

    フィードアプリは、基本的にはProduct Category列の値をgoogle_product_categoryにマッピングします。Product Category列が空の場合、アプリの設定によってはデフォルト値が使われたり、空のまま送信されたりします。自ストアで使っているフィードアプリがどう処理するか、一度確認しておくと安心です。


    まとめ

    Product Category列の一括更新は、Type列の更新とは性質が異なります。Googleタクソノミーという外部基準に沿った値を入力する必要があり、ミスがあればフィードや広告に直接影響します。更新前にタクソノミーの整合性・表記の統一・空欄の有無を確認し、必要に応じてバックアップを取ってから実行してください。

    機密CSVやスクリーンショットの送付は不要です。公開されているストアURLと気になる点を教えていただければ、Product Category列の整理方法についてご相談に乗ります。

    相談時に用意するとよい情報

    • 対象商品のおおよその点数
    • 現在Product Category列が埋まっているか・空欄か
    • 使用中のフィードアプリ(Google & YouTube Channel、Simprosatなど)
    • 主な商品カテゴリ(アパレル、雑貨、食品など)
    • Google Merchant Centerでカテゴリ関連の警告が出ているか

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Status列とPublished列を間違えると公開状態がどう変わるか

    Status列とPublished列を間違えると公開状態がどう変わるか

    Shopify商品CSVには、公開状態を操作する列が2つあります。Status列Published列です。この2つは別の役割を持っており、片方だけ変更しても期待通りにいかないケースがあります。結論から言うと、Statusは「商品自体がアクティブか下書きか」を決め、Publishedは「販売チャネルに表示するかどうか」を制御します。両方とも独立して動くため、組み合わせ次第で4パターンの状態が生まれます。誤って片方だけ書き換えてインポートすると、商品が storefront から消えたり、逆に意図せず公開されたりするので、事前に違いを押さえておくことが大切です。

    Status列とPublished列の違い

    Status列 — 商品の稼働状態

    Status列に指定できる値は次の2つです。

    意味
    active 商品が稼働状態。ストアフロントに表示可能(Publishedの設定次第で実際の表示が決まる)
    draft 商品が下書き。管理画面では確認できるが、ストアフロントには一切表示されない

    Statusをdraftにすると、PublishedがTRUEであっても商品は公開されません。商品そのものを非公開にしたい場合は、Status列をdraftにするのが確実です。

    Published列 — 販売チャネルへの表示

    Published列に指定できる値は次の2つです。

    意味
    TRUE 販売チャネルに表示する(Statusがactiveのときのみ実際に表示される)
    FALSE すべての販売チャネルで非表示にする

    Published=FALSEは、商品を「チャネルから隠す」だけで、商品自体はアクティブなまま残ります。管理画面では商品一覧に引き続き表示され、在庫管理や注文処理にも影響しません。

    4つの組み合わせと実際の表示結果

    StatusとPublishedは独立して動くため、4通りの組み合わせがあります。それぞれの状態で、ストアフロントや管理画面にどう見えるかをまとめました。

    Status Published ストアフロント 管理画面 注文受付
    active TRUE 表示される 「アクティブ」と表示 可能
    active FALSE 表示されない 「アクティブ」と表示 不可(チャネル非表示のため)
    draft TRUE 表示されない 「下書き」と表示 不可
    draft FALSE 表示されない 「下書き」と表示 不可

    active + TRUEの組み合わせだけが、実際にストアフロントに商品を表示します。それ以外の3パターンはすべてストアフロントに表示されませんが、管理画面上の扱いや内部状態が異なる点に注意してください。

    よくある間違いと起きること

    間違い1:Statusをactive→draftにしたつもりでPublishedだけ変更する

    CSVを編集するとき、Published列をFALSEにすれば商品が非公開になると思って変更したケースです。実際には商品自体はactiveのままなので、管理画面では「アクティブ」として扱われます。在庫数やコレクションの紐付けもそのまま残るため、後で「なぜストアフロントに表示されないのか」と混乱しがちです。

    間違い2:Published=FALSEで「特定チャネルだけ非表示」にできると思っている

    CSVのPublished列は、すべての販売チャネルを一括で制御します。特定のチャネル(オンラインストアだけ、POSだけなど)だけ非表示にする目的でFALSEを指定すると、全チャネルで非表示になってしまいます。個別のチャネル制御が必要な場合は、管理画面の「管理」セクションから手動で販売チャネルを設定し直す必要があります。

    間違い3:draftの商品をCSVでactiveにしたがPublishedがFALSEのまま

    Statusをdraftからactiveに変更したのに、PublishedがFALSEのままだと、商品はアクティブでもストアフロントには表示されません。「CSVで公開設定にしたのに反映されない」という場合、まずPublished列の値を確認してください。

    CSVインポート前に確認するべきポイント

    一括更新する前に、次のチェックリストでCSVの内容を確認しておくと、意図しない公開状態の変化を防げます。

    • Status列の値が正しいかactivedraftのどちらか。空欄やスペルミスがないか
    • Published列の値が正しいかTRUEFALSEのどちらか。true/false(小文字)でも動作するが、表記ゆれに注意
    • 両方の列を同時に確認しているか — Statusだけ、Publishedだけを見ていると組み合わせのミスに気づかない
    • 変更対象の行数が意図通りか — フィルタやソートのミスで想定外の行が含まれていないか
    • バックアップのCSVを用意したか — 元に戻せるように、変更前のエクスポートCSVを保存しておく

    安全にテストする手順

    本番の一括更新前に、1商品だけでテストインポートすることをおすすめします。手順は次の通りです。

    1. 管理画面から商品を1つエクスポートする(対象1行だけのCSVを作成)
    2. Status列とPublished列を、意図する組み合わせに書き換える
    3. そのCSVをインポートする
    4. 管理画面で商品の公開状態が期待通りに変わったことを確認する
    5. ストアフロント(シークレットウィンドウなど)で表示・非表示を確認する
    6. 問題なければ、本番用のCSVで一括更新に進む

    1商品のテストで想定外の挙動があれば、CSVの記述を見直してください。特に、CSVエディタがTRUEを自動的に別の形式に変換していないか(Excelで日付扱いになるケースなど)も確認しておくと安心です。


    自動でチェックできることと人間の判断が必要なこと

    自動チェックで防げる問題

    CSVのバリデーションは、スクリプトや関数で事前に確認できる部分が多いです。次の項目は自動チェックに向いています。

    • Status列の値がactiveまたはdraftのいずれかであること
    • Published列の値がTRUEまたはFALSE(大文字小文字問わず)であること
    • 空欄のセルがないこと(空欄は「変更なし」として扱われるが、意図の確認が必要)
    • Handle列が正しく設定されていること(更新対象の商品を一意に特定するため)

    人間の判断が必要な問題

    自動チェックでは判断できない部分もあります。次の点は、担当者の意図を確認する必要があります。

    • どの公開状態にしたいか — 商品ごとに「完全非公開」「チャネル非表示」「公開」のどれが適切かは、販売戦略による
    • active + FALSEの意図 — 一時的な非表示なのか、在庫整理中なのか、理由によって扱いが変わる
    • チャネルごとの表示制御 — 特定チャネルだけの表示・非表示は、CSVのPublished列では制御できないため管理画面の操作が必要
    • 下書きに戻すタイミング — シーズン商品の終了など、ビジネス判断が関わる

    相談時に用意するとよい情報

    CSVインポートで公開状態のトラブルが起きた場合、次の情報を整理しておくと、原因特定がスムーズに進みます。

    • 対象商品のHandle
    • 期待する状態(active / draft / archived、販売チャネル表示の希望)
    • CSV上の StatusPublished の値
    • いつインポートしたか
    • 管理画面で見えている状態を文章で説明したもの

    初回相談では機密CSVやスクリーンショットの送付は不要です。商品Handleと「どうしたいか」の簡単なメモだけでも、状況の整理に役立ちます。必要になった場合に後からスクリーンショットを確認することがあります。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • 複数ロケーション在庫をCSVで更新する前に見ること

    複数ロケーション在庫をCSVで更新する前に見ること

    最初に結論

    Shopifyで複数ロケーションの在庫をCSVで一括更新する場合、使うのは「在庫CSV」であって「商品CSV」ではありません。在庫CSVにはロケーションごとに On hand(実在庫)と Available(販売可能在庫)の列が並び、行数は「バリアント × ロケーション」分だけ増えます。更新前に確認すべきは、列名に含まれるロケーション名が正しいか更新するのは On hand だけか、そしてマイナス値が混じっていないかの3点です。この記事では、在庫CSVの構造と確認手順を整理します。


    商品CSVと在庫CSVの違い

    Shopify管理画面からエクスポートできるCSVには、大きく分けて2種類あります。商品情報を扱う「商品CSV」と、在庫数を扱う「在庫CSV」です。在庫数を更新したいのに商品CSVをダウンロードしてしまうと、列構成が違うため目的の項目が見つかりません。

    項目 商品CSV 在庫CSV
    主な目的 商品・バリアントの登録・更新 在庫数の一括更新
    エクスポート先 商品 > すべての商品 > エクスポート 在庫 > エクスポート
    1行の単位 バリアント1件 バリアント1件 × ロケーション1件
    在庫列の有無 なし(複数ロケーション更新には在庫CSVを使用) あり(ロケーションごとの On hand / Available)
    画像列 あり なし
    ロケーション列 なし あり(列名にロケーション名が含まれる)

    在庫数を更新する場合は、必ず在庫ページからエクスポートしたCSVを使います。


    在庫CSVの列構成

    基本列

    在庫CSVの先頭付近には、バリアントを識別するための基本列が並びます。

    • Handle — 商品のハンドル(URLスラッグ)。商品ごとに一意
    • Title — 商品名
    • Option1 Name / Option1 Value — バリアントのオプション(サイズ、色など)
    • Option2 Name / Option2 Value — 第2オプション
    • Option3 Name / Option3 Value — 第3オプション
    • SKU — 在庫管理用コード
    • HS Code — 関税分類コード(国際配送用)

    ロケーションごとの列

    基本列のあとに、登録されているロケーションごとに2列ずつ続きます。ロケーションが3つあれば、在庫関連列は6列になります。

    • [ロケーション名] On hand — そのロケーションの実在庫数
    • [ロケーション名] Available — そのロケーションの販売可能在庫数

    たとえば「東京倉庫」と「大阪倉庫」の2拠点がある場合、列名は次のようになります。

    東京倉庫 On hand, 東京倉庫 Available, 大阪倉庫 On hand, 大阪倉庫 Available

    列名にロケーション名が直接埋め込まれるため、ロケーション名を変更した場合は列名も変わる点に注意が必要です。


    On hand と Available の違い

    ここが最も混同しやすいポイントです。

    列名 意味 計算方法
    On hand 実在庫数。そのロケーションに物理的にある数 手動入力または棚卸で更新
    Available 販売可能在庫数。顧客が買える数 On hand − コミット済み(未発送注文)

    AvailableOn hand からコミット済みの注文数を引いたものです。CSVで On hand を更新してインポートすると、Shopify側で自動的に Available が再計算されます。原則としてCSVで直接編集するのは On hand 列だけにしておくのが安全です。

    具体例で見てみましょう。

    状況 On hand コミット済み Available
    実在庫10、未発送注文3 10 3 7
    実在庫を8に訂正 8 3 5

    On hand を 10 から 8 に減らすと、Available も自動的に 7 から 5 に減ります。Available 列を手動で書き換える必要はありません。


    CSVの行構造:バリアント × ロケーション

    在庫CSVでは、1つのバリアントに対してロケーションの数だけ行が作られます。バリアントが3つ、ロケーションが2つの場合、CSVは6行になります。

    Handle,Title,...,東京倉庫 On hand,東京倉庫 Available,大阪倉庫 On hand,大阪倉庫 Available
    white-shirt,Tシャツ(白),...,10,7,5,5
    white-shirt,Tシャツ(白),...,10,7,5,5
    black-shirt,Tシャツ(黒),...,8,8,3,3
    black-shirt,Tシャツ(黒),...,8,8,3,3
    ...

    同じバリアントの行が複数出力されますが、これはロケーションごとに1行ずつ展開されているためです。Shopifyにインポートする際は、この行構造を崩さないことが前提になります。


    更新前に確認すべきチェックリスト

    在庫CSVをインポートする前に、次の項目を確認します。

    # 確認項目 確認方法
    1 CSVの種類が在庫CSVか 列名に「On hand」「Available」が含まれているか
    2 列名のロケーション名が正しいか 管理画面のロケーション設定と突き合わせ
    3 編集したのは On hand 列だけか Available 列や他の列を書き換えていないか
    4 マイナス値が混じっていないか On hand 列をフィルタまたは条件付き書式で確認
    5 意図しない行の On hand を書き換えていないか フィルタで変更対象のSKUだけを表示して確認
    6 文字コードがUTF-8か エディタやスプレッドシートの保存設定を確認

    よくある間違いと影響

    1. 商品CSVで在庫数を更新しようとする

    商品CSVには Variant Inventory Qty 列がありますが、複数ロケーションの在庫数を更新する目的ではこの列に頼らず、在庫CSVを使います。単一ロケーション運用では商品CSV側の在庫列が関係する場合があるため、この記事では複数ロケーション更新に話を限定します。

    2. 間違ったロケーションの On hand を更新する

    列が「東京倉庫 On hand」と「大阪倉庫 On hand」で並んでいると、列の位置を取り違えることがあります。東京の在庫を増やすつもりで大阪の On hand 列に数値を入れると、実際の在庫とデータが乖離します。

    この間違いに気づかないと、次のような問題が起きます。

    • 発送元ロケーションの在庫が不足していると判定され、注文にアサインされない
    • 他方のロケーションで過剰在庫として表示される
    • 棚卸時の実在庫とシステム上の数値が合わない

    3. On hand 列にマイナス値を入力する

    On hand 列にマイナスの数値を入力すると、Shopifyはその値を受け付ける場合がありますが、在庫追跡が無効になったり、予期しない在庫状態になります。基本的には On hand には 0 以上の値を入力します。

    4. 列を追加・削除してインポートする

    CSVの列構成を変える(列を追加する、列の順序を変える、列名を変更する)と、インポート時にエラーになります。列構成はエクスポート時のまま維持し、On hand 列の値だけを書き換えます。


    自動で確認できる項目と人間の判断が必要な項目

    スプレッドシートやスクリプトで自動確認できること

    次の項目は、スプレッドシートの関数や簡単なスクリプトで機械的にチェックできます。

    • On hand 列にマイナス値や文字列が混じっていないか
    • 列名のロケーション名が、エクスポート時から変わっていないか
    • Handle や SKU が空の行がないか
    • 数値列にカンマ区切り(1,000など)が入っていないか

    Googleスプレッドシートなら、条件付き書式で <0 のセルを赤くするだけで、マイナス値の混入にすぐ気づけます。

    人間の判断が必要なこと

    次の項目は文脈理解が必要なため、自動化だけに頼れません。

    • どのロケーションの在庫を更新すべきか(入荷先の判断)
    • 在庫数の妥当性(極端に大きい値や小さい値が正しいか)
    • 廃番や季節商品の On hand を 0 にしてよいか
    • 複数ロケーション間で在庫を振り替えるべきか

    安全にインポートする手順

    1. 在庫ページからCSVをエクスポートする(「すべての在庫」を選択)
    2. 元ファイルをコピーしてバックアップをとる
    3. コピーしたファイルで、更新対象の SKU をフィルタで絞り込む
    4. 該当行の On hand 列だけを書き換える
    5. 上記チェックリストの各項目を確認する
    6. CSVを保存する(UTF-8、カンマ区切り)
    7. 在庫ページからインポートする
    8. インポート後、管理画面で対象SKUの在庫数を確認する

    インポートは上書きではなく「設定」の動作になります。空のセルは「何もしない」として扱われるため、一部の行だけを更新したい場合は、その行の On hand 列にだけ数値を入れます。


    まとめ

    複数ロケーションの在庫をCSVで更新するときの要点を改めて整理します。

    • 在庫CSVと商品CSVは別物 — 在庫更新には在庫CSVを使う
    • On hand が実在庫、Available は自動計算 — 編集するのは On hand だけ
    • 列名にロケーション名が含まれる — 列の取り違えに注意
    • インポート前のチェックリストで確認 — マイナス値、列構成、ロケーション名
    • 自動チェックと人間の判断を組み合わせる — 数値の正確性と更新先の妥当性

    CSVでの在庫更新は、一度手順を固めれば数百SKUの更新も数分で完了します。ただし、間違ったロケーションを更新すると実在庫とのズレが配送現場に影響するため、更新前の確認は省略しないことが大切です。


    機密CSVやスクリーンショットの送付は不要です。在庫CSVの列構成が分からない、どの列を編集すべきか迷う、という場合は、ロケーション名やSKUをテキストで教えていただければ、どこを編集すればよいかご案内できます。

    相談時に用意するとよい情報

    • 管理画面に登録されているロケーション名の一覧
    • エクスポートした在庫CSVの列構成(最初の1〜2行分でOK、SKUはマスキング可)
    • 更新したいSKUの件数と、更新頻度(月1回、週1回など)
    • 現在の商品CSVと在庫CSVをどちらを使っているかの認識

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • CSVバックアップを取らずに一括更新しないための運用ルール

    CSVバックアップを取らずに一括更新しないための運用ルール

    ShopifyのCSV一括インポートには「元に戻す」ボタンがありません。更新前にバックアップCSVを必ず保存し、ファイル名に日付と目的を入れ、差分を確認してから本番インポートを回す――この3ステップをチームの運用ルールにすると、誤操作の被害を最小限に抑えられます。

    なぜCSVバックアップが前提になるのか

    Shopify管理画面から商品CSVをエクスポートして編集し、再度インポートすると、CSVに含まれる全商品の該当列がそのまま上書きされます。もし誤った列を書き換えていた場合、管理画面からは変更前の値を取り戻す手段がありません。

    特に次のようなケースで事故が起きやすくなります。

    • 価格列の小数点を間違えて100円→10,000円に更新してしまった
    • 在庫数を誤ってゼロで上書きし、商品が一斉に「在庫切れ」になった
    • 複数人が同時にCSVをダウンロードし、別々の編集をインポートして互いの変更を消し合った
    • 日本語の説明文をUTF-8で保存し忘れ、文字化けしたままインポートされた

    バックアップCSVは復旧の土台になります。元の値を確認でき、戻せる可能性が高まります。ただし、CSVに含まれる列、画像、variant構成、在庫ロケーション、インポート設定によっては完全に戻せるとは限らないため、変更対象列とインポート設定も記録しておくことを推奨します。

    バックアップファイルの命名ルール

    バックアップCSVはあとで探しやすい名前に統一します。推奨フォーマットは次のとおりです。

    基本フォーマット

    products_export_YYYYMMDD_before-[目的].csv

    具体例:

    ファイル名 用途
    products_export_20260527_before-price-fix.csv 価格修正前のバックアップ
    products_export_20260527_before-bulk-seo.csv SEOタイトル・説明一括変更前
    products_export_20260527_before-new-items.csv 新規商品追加前の現行データ
    products_export_20260527_before-tag-cleanup.csv タグ整理前のバックアップ

    命名に含めるべき要素

    1. 日付 ― いつのバックアップか一目で分かる
    2. before ― 更新「前」であることが明確になる
    3. 目的ラベル ― 何の作業のためのバックアップか分かる

    チームで共有フォルダに保存する場合、これらの要素が揃っていれば、数週間後でも「あの価格修正の前のデータ、どれだっけ?」と探す手間が省けます。

    更新前に保存するもの

    CSVインポートを行う前に、次の3つを必ず保存します。

    保存対象 保存方法 理由
    現行のエクスポートCSV そのままリネームして共有フォルダへ 復旧用のマスターデータ
    編集後のCSV(インポート用) 同じフォルダに_after付きで保存 何を変更したか後から追跡できる
    差分レポート diffツールの出力をテキスト保存 意図しない変更が混入していないかの証拠

    保存先はチーム全員がアクセスできる共有フォルダ(Googleドライブ、SharePoint、社内NASなど)を一つ決めておきます。ローカルPCのデスクトップに置いたままでは、本人が休んだときに他の人がバックアップを見つけられません。

    共有フォルダの構成例

    shopify-csv-backup/
    ├── 2026/
    │   ├── 05/
    │   │   ├── 27_price-fix/
    │   │   │   ├── products_export_20260527_before-price-fix.csv
    │   │   │   ├── products_import_20260527_after-price-fix.csv
    │   │   │   └── diff_20260527_price-fix.txt
    │   │   └── 28_tag-cleanup/
    │   │       ├── products_export_20260528_before-tag-cleanup.csv
    │   │       ├── products_import_20260528_after-tag-cleanup.csv
    │   │       └── diff_20260528_tag-cleanup.txt
    

    差分確認ワークフロー

    バックアップを取っただけでは不十分です。インポートする前に「変更前」と「変更後」の差分を確認し、意図した列だけが書き換わっているか検証します。

    手順

    1. Shopify管理画面から「商品をエクスポート」し、_before付きで保存
    2. このCSVをコピーして編集用ファイルを作成
    3. 編集が終わったら、_after付きで保存
    4. diffツールで_before_afterを比較
    5. 差分が想定範囲内か確認(列数、行数、変更箇所)
    6. 問題なければ_afterファイルをインポート

    diff確認のポイント

    確認項目 期待される結果 NG例
    行数の変化 商品追加時のみ増加、それ以外は同じ 商品削除の意図がないのに数百行減っている
    変更列 対象列だけが変わっている 価格修正のはずが説明文も変わっている
    Handle列 既存商品のHandleは一切変わっていない Handleが書き換わって新規商品として二重登録
    文字化け 日本語が正常に表示される 「???」や「�」が混入している

    復旧手順:バックアップCSVをインポートし直す

    万が一、インポート後のデータに問題があった場合の復旧手順です。

    1. 共有フォルダから_beforeバックアップCSVを見つける
    2. ファイルを開いて文字化けがないか確認(UTF-8であること)
    3. Shopify管理画面の「商品をインポート」から_beforeCSVをアップロード
    4. 「既存の商品を上書きする」オプションが有効であることを確認
    5. インポート完了後、管理画面で数件の商品を開いて値が戻っているか目視確認

    注意点: バックアップCSVに含まれていない列(インポート時に空白だった列)は上書きされないため、画像やバリアント情報は元のまま残ります。ただし、CSVに含まれている列は空白でも上書きされるため、意図せぬ列を空白にしていないか、事前のdiff確認で防ぐことが重要です。

    チーム運用ルールのチェックリスト

    複数人でCSV更新を行うチームでは、バックアップとインポートの手順をルール化しておくことで事故を予防できます。

    # ルール 目的
    1 インポート前に必ずエクスポートしてバックアップを保存する 復旧手段の確保
    2 バックアップファイルの命名ルールに従う 検索性の向上
    3 インポート前にdiffレポートを作成する 意図しない変更の検出
    4 差分確認は編集者以外のメンバーが行う ダブルチェックによるヒューマンエラー防止
    5 インポート実行前に担当者をチャット等で宣言する 同時更新の衝突防止
    6 インポート後、5〜10商品をサンプリングして目視確認する 実際の反映結果の検証
    7 バックアップCSVは最低30日間は削除しない 遅れて発覚した問題への対応
    8 インポート作業ログ(日時・担当者・目的)を残す 事後追跡と振り返り

    自動化できる部分と人間の判断が必要な部分

    自動化・ツールで機械的に確認できること

    • ファイル名チェック ― 命名ルールに合致しているかスクリプトで検証
    • 行数・列数の比較 ― before/afterの行数差、列構成の変化を自動レポート
    • Handle列の不変確認 ― 既存行のHandleが変わっていないかスクリプトで検出
    • 文字エンコーディング検証 ― UTF-8 BOMなしであることを自動確認
    • 必須列の存在確認 ― Title、Handleなどの必須列が欠落していないかチェック

    人間が判断すべきこと

    • 変更範囲の妥当性 ― 「今回の価格修正で3000商品中2500商品が変わるのは妥当か?」は文脈による
    • インポートの承認 ― diffレポートを見て「これを本番に反映してよいか」を判断
    • 緊急時の復旧判断 ― バックアップCSVを戻すべきか、一部だけ手動修正するべきか
    • 同時作業の調整 ― 他の担当者がCSV編集中かどうかの確認と作業順序の決定

    機械的に確認できる部分をスクリプトやシェルコマンドに任せ、人間は本質的な判断に集中するのが効率的な運用です。たとえば、次のようなワンライナーで行数の急激な変化を検出できます。

    # before/afterの行数を比較(ヘッダー除く)
    echo "before: $(($(wc -l < products_export_20260527_before-price-fix.csv) - 1))"
    echo "after : $(($(wc -l < products_import_20260527_after-price-fix.csv) - 1))"

    インポート作業ログのテンプレート

    チームで共有する作業ログのひな形です。インポートのたびにこの項目を記録します。

    項目 記入例
    実施日時 2026-05-27 14:30
    担当者 田中
    目的 夏季セールに向けた価格一括変更
    バックアップファイル名 products_export_20260527_before-price-fix.csv
    インポートファイル名 products_import_20260527_after-price-fix.csv
    変更商品数 342件
    変更列 Variant Price
    diff確認者 佐藤(田中以外のメンバー)
    インポート後の目視確認結果 10件サンプリング、全て正常

    このログがあれば、「先週の金曜に誰が何を変更したか」がすぐに追跡できます。スプレッドシートの一行として管理しても、チャットの定型フォーマットとして投稿しても構いません。チームが継続しやすい形を選んでください。


    CSVバックアップは「取っておしまい」ではなく、命名ルール・差分確認・復旧手順の3本をセットで運用することで初めて意味を持ちます。特に複数人で商品管理をしている場合は、インポート宣言やダブルチェックのルールを決めておくことで、データ事故のリスクを大幅に下げられます。まずは次回のCSV更新から、エクスポートファイルを_before付きで保存し、diffを取る習慣を始めてみてください。

    相談時に用意するとよい情報

    • 現在管理しているおおよその商品数(数百、数千などで構いません)
    • CSV更新の頻度(週1回、月1回、不定期など)
    • CSV更新を担当している人数
    • 過去にCSVインポートで起きたトラブルの有無と内容
    • 現在使っている共有フォルダやファイル管理の仕組み

    機密CSVやスクリーンショットの送付は不要です。上記の情報をお知らせいただければ、チームの規模と更新頻度に合わせたバックアップ運用の具体的な設計をご提案できます。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • SKUとBarcode(JAN)の違いをCSV列で混同しないための確認

    SKUとBarcode(JAN)の違いをCSV列で混同しないための確認

    Shopifyの商品CSVを編集するとき、Variant SKU列とVariant Barcode列の違いが曖昧になり、JANコードをSKU列に入れたり、その逆が起きがちです。SKUは社内の在庫管理番号、Barcode(JAN)は商品を識別する国際標準コードで役割が異なります。列を間違えるとmissing GTINinvalid GTINの原因になります。CSV投入前はShopifyの商品登録CSVの事前確認も合わせて行ってください。


    SKUとBarcode(JAN)はそもそも何が違うのか

    SKU(Stock Keeping Unit)は、店舗や倉庫が内部管理のために自由に付けるコードです。法則は運営者が決められ、同じ商品でもカラーごと・サイズごとに別々のSKUを割り当てるのが一般的です。

    Barcode(JAN / EAN / UPC)は、商品パッケージに印字されているバーコードの数字です。日本ではJANコード(13桁)が主流で、GS1 Japanが発行する全球共通の識別番号です。SKUのように自社で自由に決められるものではありません。

    両者の役割を整理すると次のようになります。

    項目 SKU Barcode(JAN)
    目的 社内在庫管理 商品の世界的識別
    発行主体 自社で自由に決定 GS1 Japan等の機関が発行
    桁数 自由(空白も可) JAN: 8桁または13桁
    重複の可否 原則ユニーク推奨 世界中で一意(重複不可)
    TS-BLK-M 4901234567890

    Shopify商品CSVで該当する列はどれか

    Shopify管理画面から [設定] > [データ形式] > [商品をエクスポート] で出力したCSVには、SKUとBarcodeそれぞれに専用の列があります。該当列と周辺列をまとめました。

    CSV列名 目的 入力内容の例
    Handle 商品のURL識別子。同一Handleで複数バリエーション行をまとめる black-t-shirt
    Option1 Name 第一オプション名(例: サイズ) Size
    Option1 Value 第一オプション値(例: M) M
    Option2 Name / Option2 Value 第二オプション(例: カラー) Color / Black
    Variant SKU 社内管理コード TS-BLK-M
    Variant Barcode JAN / EAN / UPCコード 4901234567890
    Variant Grams バリエーションの重量(グラム) 250
    Variant Inventory Tracker 在庫追跡サービス shopify

    ポイントは、Variant SKUVariant Barcodeバリエーション行ごとに設定する列だということです。1つの商品に3つのサイズ展開があれば、Handleは同じまま3行分のバリエーション行が並び、それぞれにSKUとBarcodeを記載します。


    列を間違えて入力したときに何が起きるか

    SKU欄にJANコードを入れてしまった場合

    Variant SKU列に 4901234567890 のようなJANコードを入力すると、次のような問題が起きます。

    • 社内在庫システムで「どの商品か」を判別するコードとして、JANコードが使われてしまい、社内コード体系と不一致になる
    • Google Merchant Centerのフィードで、mpn(メーカー型番)フィールドにJANコードが入り、審査で「mpnとgtinが同じ値です」という警告が出ることがある
    • 複数カラー・サイズで同じJANをSKU欄に入れてしまうと、在庫連携ツールがSKUの重複を検知してエラーを返す

    Barcode欄にSKUを入れてしまった場合

    逆に、Variant Barcode列に TS-BLK-M のような社内コードを入力すると、次のような問題が起きます。

    • Google Merchant Centerのフィードで、gtinフィールドに不正な値が入り、「GTINが無効です」という不承認理由になる
    • POSレジでのバーコードスキャン時に商品がヒットせず、店頭販売に支障が出る
    • マーケットプレイス連携(Amazonや楽天)でJANコードとして送信され、出品エラーになる

    Excelで先頭ゼロが消える問題

    JANコードをExcelで開くと、4901234567890のような数値が指数表示(4.90123E+12)になったり、先頭ゼロのあるコード(00012345)のゼロが欠落したりします。これはBarcode列特有の事故で、SKU列では起こりにくいトラブルです。

    対策として、CSVをExcelで開く前にメモ帳などで開いて列の内容を確認するか、Excelのインポート機能でVariant Barcode列を「文字列」として指定して読み込んでください。


    CSVインポート前の確認手順

    自動でチェックできる項目

    CSVをShopifyにインポートする前に、スプレッドシートの関数や簡易スクリプトで次の項目を機械的に確認できます。

    チェック項目 確認方法 期待される結果
    Variant SKUの重複 COUNTIF関数などで重複を抽出 同一SKUが複数行に存在しない
    Variant Barcodeの桁数 LEN関数で8桁または13桁か確認 8桁または13桁の数値文字列
    Variant Barcodeの先頭ゼロ欠落 セルの表示形式が文字列か確認、または数値化された行を検出 ゼロから始まるコードが保持されている
    Variant Barcodeの文字種 正規表現 ^[0-9]{8}$|^[0-9]{13}$ で検証 数字のみで構成されている
    Variant SKUの空欄 空白セルをフィルタで抽出 在庫管理に使うSKUが空欄ではない
    Handleとバリエーション行の整合 同一Handle内でOption列の組み合わせが重複していないか確認 同じバリエーションが2行以上存在しない

    Googleスプレッドシートを使っている場合は、次のような数式でBarcodeの桁数チェックが可能です。

    =IF(OR(LEN(TRIM(K2))=0, LEN(TRIM(K2))=8, LEN(TRIM(K2))=13), "OK", "桁数要注意")
    

    ここで K2Variant Barcode列のセルを指します。空白(Barcodeを使わない商品)は許容するため、空文字もOKとしています。

    人の判断が必要な項目

    機械的なチェックでは判断が難しい項目もあります。インポート前に必ず目で確認してください。

    • 更新対象の列が正しいか: 今回のCSV更新でSKUだけを変更するのか、Barcodeだけを変更するのか、両方を変更するのかを明確にする。意図しない列に値が入っていないか確認する。
    • 新規商品か既存商品か: 既存商品のHandleと同一Handleを使うと上書き更新になる。新規商品のはずが既存Handleと重複していないか確認する。
    • BarcodeにJAN以外の体系を含むか: 一部の商品だけUPC(12桁)を使っている場合、桁数チェックの基準を調整する必要がある。
    • SKU体系の変更意図: 既存のSKU命名規則を変更する場合、在庫連携先(倉庫システムや会計ソフト)でもSKUの紐付け更新が必要になるか確認する。
    • Barcode空白の可否: バリエーション商品で、親商品にBarcodeを設定せずバリエーション行のみに設定する設計が多い。空白のまま意図的に残しているか、入力漏れかを判断する。

    実務での入力ワークフロー例

    新商品を一括登録する場面を例に、SKUとBarcodeを正しく入力する手順を示します。

    1. 元データを準備する: 商品マスタからSKU、JANコード、商品名、オプション値を抽出し、1行1バリエーションで並べる
    2. 列ヘッダーをShopify形式に合わせる: 社内マスタの「管理コード」列をVariant SKUに、「JANコード」列をVariant Barcodeにマッピングする
    3. Barcode列を文字列として保存する: Excelの場合はBarcode列全体を選択し、セルの書式を「文字列」に設定してから値を貼り付ける
    4. 自動チェックを実行する: 前述の桁数チェック・重複チェック・文字種チェックを実行し、エラー行を修正する
    5. サンプル行を目視確認する: 最初の5〜10行について、SKU列に管理コードが入っていること、Barcode列にJANコードが入っていることをヘッダー名と照合しながら確認する
    6. テストインポートする: 全行ではなく一部の商品(3〜5商品)だけを含むCSVで試しにインポートし、管理画面でSKUとBarcodeがそれぞれ正しい欄に反映されているか確認する
    7. 本番インポートする: テスト結果に問題がなければ全体をインポートする

    この手順の中で特に時間をかけるべきなのは手順5の目視確認です。自動チェックを通過していても、列のマッピング自体が逆になっていれば全行が間違ったままインポートされてしまいます。


    CSV列の混同を防ぐためのチェックリスト

    最後に、CSVを編集・インポートする際の確認項目をチェックリスト形式でまとめます。インポート前に一読してください。

    No. 確認項目 確認手段
    1 Variant SKU列に社内管理コードが入っている ヘッダー行と照合
    2 Variant Barcode列にJAN/EAN/UPCが入っている ヘッダー行と照合
    3 SKUとBarcodeで値の体系が逆転していない サンプル行の目視
    4 Barcode列で先頭ゼロが欠落していない LEN関数・文字列表示確認
    5 Barcodeが8桁または13桁の数字のみである 正規表現またはLEN関数
    6 SKUがバリエーション行ごとにユニークである COUNTIF関数・重複抽出
    7 Handleが既存商品と意図せず重複していない 既存CSVとの突合
    8 更新対象列だけが変更されている(意図しない列の値が書き換わっていない) 変更前後CSVの差分確認

    相談時に用意するとよい情報

    CSVの編集やインポートでつまずいた際、サポートに相談する前に次の情報を手元に用意しておくと、やり取りがスムーズに進みます。

    • 現在使用している商品CSVのサンプル(商品名や金額をマスキングしたもので構いません)
    • SKUとBarcodeのどちら(または両方)を変更・登録しようとしているか
    • インポート時に表示されたエラーメッセージの全文(テキストで貼り付けるだけで構いません)
    • 現在の管理画面でのSKU・Barcodeの表示状態(項目名と値をテキストで知らせるだけで構いません)
    • 使用している在庫連携ツールやGoogle Merchant Centerフィードの有無
    • 商品のバリエーション構成(オプション名と値の組み合わせ)

    関連して確認したい記事

    CSVを送らなくても、列名・更新したい作業・不安な事故だけで確認順を整理できます。初回相談では機密CSVやスクリーンショットの送付は不要です。

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Shopify商品CSVと在庫CSVの違い: インポート前に混同しないための確認

    Shopify商品CSVと在庫CSVの違い: インポート前に混同しないための確認

    ShopifyのCSV作業でよくある事故が、商品CSVと在庫CSVを同じものとして扱ってしまうことです。どちらもCSVですが、更新する対象が違います。商品名や画像を直したいのか、ロケーション別の在庫数を直したいのかを分けないと、意図しない上書きが起きます。

    まず何が違うか

    商品CSVは、商品タイトル、説明、Handle、Option、Variant SKU、価格、画像URLなど、商品情報全体を扱います。在庫CSVは、商品バリエーションとロケーションごとの在庫数量を更新するためのCSVです。複数ロケーションを使っている店舗では、この違いが特に重要です。

    混同すると起きること

    • 商品CSVで直すつもりのない列まで空欄で上書きする
    • 在庫CSVで更新すべき数量を商品CSV側で探して迷う
    • ロケーション別在庫を無視して、全体在庫だけを見て判断する
    • SKUやOption列のずれで、別バリエーションの在庫を触る
    • 商品移行用CSVを、日々の在庫更新に使ってしまう

    確認する列

    商品CSVでは、HandleTitleOption1 NameOption1 ValueVariant SKUVariant PriceImage Srcを先に見ます。在庫CSVでは、HandleSKULocationOn hand (current)On hand (new)など、在庫数量とロケーションに関係する列を見ます。

    手作業で進める場合

    まず目的を一文で書きます。「価格を変えたい」「画像URLを差し替えたい」なら商品CSV寄りです。「東京倉庫の在庫を20にしたい」なら在庫CSV寄りです。次に、Shopifyから最新のCSVをエクスポートし、編集する列だけを決めます。投入前には、対象商品を数件に絞ったテスト用CSVで差分を確認します。

    小さく自動化できる部分

    CSVの列名を見て、商品CSVなのか在庫CSVなのかを判定するチェックは自動化できます。さらに、更新対象外の列に値が入っていないか、HandleとSKUが重複していないか、ロケーション名が既存設定と合っているかも事前確認できます。ただし、どの列を正として残すかは作業目的によって変わります。

    注意点

    CSV投入は一括で反映されるため、間違えると広範囲に影響します。この記事は確認手順の整理であり、復元や在庫数の正しさを保証するものではありません。作業前のエクスポート保存と、少件数での確認は省かない方が安全です。

    相談前に整理しておくこと

    • 商品情報を直したいのか、在庫数を直したいのか
    • 複数ロケーションを使っているか
    • 更新したい列名
    • 過去にCSV投入で壊れた内容

    Shopify CSVの投入前チェックや、壊れそうな列の整理について相談できます。初回相談では機密情報を含むCSVを送る必要はありません。更新したい列や不安な作業だけでも整理できます。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Shopify CSVインポート後に在庫が0になる原因と確認列

    Shopify CSVインポート後に在庫が0になる原因と確認列

    Shopify CSV で在庫が0になる原因は、商品CSVと在庫CSVのどちらを使ったかで切り分けます。商品CSVでは Variant Inventory Qty、Variant Inventory Tracker、Variant SKU の扱いを確認し、在庫CSVでは SKU、Location、On hand / Available の列を見ます。空欄・0・未更新は同じ意味ではないため、投入前にバックアップを取り、差分を確認することが事故防止の基本です。特に商品CSVで在庫数を更新する場合と、在庫CSVで更新する場合とで、影響範囲が異なります。

    在庫が0になる原因は商品CSVと在庫CSVで分ける

    Shopify では在庫数の更新に2種類のCSVが使われます。どちらのCSVを使ったかによって、在庫が0になる原因と確認すべき列が変わります。

    2種類のCSVの違い

    CSVの種類 主な用途 在庫関連の列 注意点
    商品CSV(Products CSV) 商品情報の全体的な更新 Variant Inventory Qty、Variant Inventory Tracker、Variant SKU 在庫数以外の列もまとめて更新される
    在庫CSV(Inventory CSV) 在庫数に特化した更新 SKU、Location、On hand、Available 在庫数だけを更新するが、列の指定を間違えると事故になる

    まず確認すること: 在庫が0になったのは、商品CSVをインポートした後か、在庫CSVをインポートした後か。これによって原因の切り分け方が変わります。

    どちらのCSVを使うべきか

    • 商品情報(タイトル、説明、価格、画像など)も一緒に更新する場合:商品CSVを使う
    • 在庫数だけを一括更新したい場合:在庫CSVを使う(影響範囲が在庫に限定されるため、事故リスクが下がる)

    在庫数の更新だけが目的であれば、在庫CSVを使う方が安全です。商品CSVは更新対象が多く、意図しない列の上書きが起きやすくなります。

    商品CSVで見る列

    商品CSVをインポートして在庫が0になった場合、次の列を確認します。

    Variant Inventory Qty

    この列は、variant の在庫数量を指定します。

    意味 Shopify側の動作
    数値(例:10 指定した数量に設定される 旧い数量は上書きされる
    0 在庫0に設定される 「在庫切れ」の表示になる
    空欄 列の値が無視される(と見せかけて、CSVのバージョンや設定によって動作が変わる場合がある) 空欄の取り扱いは公式仕様を確認
    列ごと省略 在庫数は変更されない 他の列だけが更新される

    よくある事故: Variant Inventory Qty 列に 0 を入れたつもりがないのに、空欄を 0 として扱ってしまったケース。スプレッドシートで編集していると、空白セルが意図せず 0 に変換されることがあります。

    Variant Inventory Tracker

    この列は、在庫管理を Shopify で行うかどうかを指定します。

    意味 在庫への影響
    shopify Shopify で在庫を管理する Variant Inventory Qty の値が反映される
    空欄または未設定 Shopify で在庫を管理しない 在庫数の表示・更新が行われない
    null トラッキングなし 在庫管理の対象外

    よくある事故: Variant Inventory Tracker を shopify に設定せずに Variant Inventory Qty に数値を入れても、在庫として反映されない。逆に、Tracker を空欄にしたことで、既存の在庫管理が解除されてしまうこともあります。

    Variant SKU

    在庫CSVと連携するためのキーとなるのが Variant SKU です。SKU が一致しないと、在庫CSVでの更新が正しく反映されません。

    確認ポイント:

    • SKU に余分なスペースが入っていないか(前後にスペース)
    • 全角・半角が統一されているか
    • 同じ SKU が複数の variant に割り当てられていないか(重複 SKU)

    在庫CSVで見る列

    在庫CSV(Inventory CSV)は、商品CSVとは列構成が異なります。在庫に特化した列を確認します。

    在庫CSVの主要列

    列名 内容 よくある事故
    SKU 在庫更新の識別キー SKU不一致で更新されない。空欄の行があるとスキップされる
    Location 在庫を管理するロケーション名 別のロケーションの在庫だけ更新してしまう
    On hand 実在庫数 0にすべきでない商品を0にしてしまう
    Available 販売可能在庫数 On hand と Available の違いを理解せずに更新する

    On hand と Available の違い

    この2つの列は似ていますが、意味が異なります。公式ヘルプでの定義を確認することが重要ですが、大まかな違いは以下のとおりです。

    • On hand:倉庫に実際にある在庫数
    • Available:On hand から予約済み(受注済みで未出荷など)を引いた、販売可能な数

    どちらの列を更新すべきかは、運用方針によります。間違った列を更新すると、受注残との整合性が崩れる可能性があります。

    Location の確認

    複数のロケーション(倉庫・店舗など)を持っている場合、在庫CSVの Location 列で更新先を指定します。

    • 間違ったロケーションを指定している:A倉庫の在庫を更新したいのに、B店舗の在庫を0にしてしまう
    • ロケーション名の表記ゆれ:CSVの Location 列の値が、Shopify に登録されているロケーション名と一致しないと更新されない
    • 新規ロケーション:CSV上のロケーション名が Shopify に存在しない場合、更新自体がスキップされることがある

    空欄・0・未更新の違いを確認する

    在庫が0になった原因を切り分ける際、空欄・0・未更新は明確に区別して考えます。

    状態 CSV上の見え方 Shopify側の動作 意図した更新か
    意図的に0にした 0 在庫0として設定 はい(はず)
    空欄のつもりが0になった 空欄 → 0 に変換 在庫0として設定 いいえ
    列を省略した 列なし 既存の値が維持される 更新されない
    行を省略した 行なし そのvariantは更新されない 更新されない
    SKUが不一致 値は正しいがSKUが違う 更新されない 別のvariantが更新されている可能性

    スプレッドシートでの空欄→0変換に注意:
    Google スプレッドシートや Excel でCSVを編集する際、空欄のセルに 0 が自動入力される設定になっている場合があります。特に、数式で値を生成している場合、空白セルが 0 扱いになることがあります。CSVを保存する前に、空欄のセルが本当に空欄のままかを確認してください。

    投入前に差分previewを作る

    在庫が0になる事故を防ぐため、CSVをインポートする前に差分を確認します。この作業は「更新前在庫」「更新後在庫」「差分」を並べたpreview(確認用シート)を作ることです。

    差分previewの作り方

    1. 現在の在庫データを取得する:Shopify 管理画面から在庫CSVをエクスポートする
    2. 更新用CSVを作成する:エクスポートしたCSVをコピーし、更新したい値を書き換える
    3. 差分列を追加する:スプレッドシートで「更新前在庫」「更新後在庫」「差分」の3列を並べる
    4. 急減アラートを設定する:差分が一定数以上(例:在庫が10以上減少)の行を条件付き書式で強調表示する

    差分previewのイメージ

    SKU 更新前在庫 更新後在庫 差分 備考
    SHIRT-BLK-M 25 20 -5 正常な販売による減少
    SHIRT-WHT-S 15 0 -15 要確認
    SHIRT-BLK-L 8 8 0 変更なし
    BAG-RED 30 0 -30 要確認

    このように差分を可視化しておくと、「意図せず在庫が0になる」行をインポート前に発見できます。差分が急激に減少している行(特に0になる行)は、インポート前に個別に確認してください。

    バックアップの重要性

    CSVをインポートする前に、必ず現在の在庫データをエクスポートして保存します。これにより、事故が起きた場合に元の値に戻すことができます。バックアップがない状態でCSVをインポートするのは避けてください。

    自動化できる部分

    • 0になっている行の検出:更新用CSVで、在庫数が0になる行を自動抽出
    • 空欄と0の区別:CSV上で空欄のセルと 0 が入力されたセルを区別してチェック
    • SKU 不一致・重複 SKU の検出:更新用CSVの SKU が Shopify 側の SKU と一致しない行、同じ SKU が複数行にある行を検出
    • Location 不一致の一覧化:更新用CSVの Location 値が Shopify に存在しない場合に警告
    • 更新前後差分の作成:更新前CSVと更新用CSVを比較し、差分行を自動抽出

    人間判断が必要な部分

    • 0にすることが意図した更新か:在庫切れ商品として0にするのか、事故なのかは意図の確認が必要
    • 予約販売・取り寄せ・在庫切れの運用方針:在庫が0になった商品をどう扱うかは、店舗の運用方針によります
    • どのロケーションを正とするか:複数倉庫がある場合、どの倉庫の在庫を優先するかはビジネス判断
    • SKU の表記ゆれをどう統一するか:全角・半角、スペースの有無など、命名規則の決定

    注意点

    • Shopify の商品CSVインポート仕様、在庫CSV仕様は更新される可能性があるため、操作時の公式ヘルプで確認してください
    • Inventory tracker、Location、On hand、Available の仕様・動作は、Shopify のプランや設定によって異なる場合があります
    • CSVのインポートは元に戻す(アンドゥ)ことができないため、必ずバックアップを取ってから実行してください
    • 大量のCSVインポートは、テスト用の少量データで動作確認してから本番に適用することをお勧めします

    CSV投入後に在庫が0になるのが不安な場合や、商品CSVと在庫CSVのどちらを使うべきか迷っている場合はご相談ください。更新したい列・対象件数・ロケーション数をお伺いすれば、確認すべきポイントをご案内します。初回相談では、機密CSVやスクリーンショットの送付は不要です。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Shopify商品CSVのHandleがずれると何が壊れるか

    Shopify商品CSVのHandleがずれると何が壊れるか

    Shopifyの商品CSVでは、Handle が商品を見分ける重要な列です。タイトルやSKUを直しただけのつもりでも、Handleが変わっていると、既存商品の更新ではなく別の商品として扱われたり、画像やバリエーションの対応が崩れたりします。

    まず何が起きているか

    Handleは商品ページURLにも使われる識別子です。CSVで既存商品を更新するとき、同じ商品として扱いたい行のHandleが既存データと一致しているかを確認します。商品名を変更したからといって、Handleまで毎回変える必要があるとは限りません。逆に、移行作業で複数商品に同じHandleが入っていると、意図しないまとまり方になります。

    Handleずれで起きやすいこと

    • 更新したつもりの商品が新規商品として作られる
    • 同じ商品内に入るはずのバリエーションが別商品に分かれる
    • 画像行が別の商品に紐づく
    • 旧URLを前提にした内部リンクや広告URLの確認が必要になる
    • 在庫CSV側のHandleと商品CSV側のHandleが一致しない

    確認する列

    商品CSVでは HandleTitleOption1 NameOption1 ValueVariant SKUImage Src を並べて見ます。単品商品なら1つのHandleに1行だけの場合もありますが、色やサイズのバリエーションがある商品は、同じHandleの複数行で構成されます。画像だけの行があるCSVでは、Handleのずれが画像紐づけのずれとして出ることもあります。

    手作業で直す場合

    まず管理画面から現在の商品CSVをエクスポートし、更新用CSVのHandleと突き合わせます。既存商品を更新したいなら、既存CSVのHandleを基準にします。新しい商品として作りたいものだけ、新しいHandleにします。表計算ソフトでタイトルからHandleを再生成する場合は、既存商品まで一括で変換しないように、更新対象を別シートで絞ってから作業します。

    自動化できる部分

    投入前チェックでは、Handleの重複数、空欄、全角文字やスペースの混入、既存CSVに存在しないHandle、既存CSVにはあるが更新CSVにはないHandleを一覧化できます。また、同じHandleの中でOption列の組み合わせが重複していないかも機械的に確認できます。ただし、URLを変更してよいか、SEOや広告リンクの影響をどう扱うかは店舗側の判断です。

    注意点

    Handleを直せばすべて元通りになるとは限りません。すでにインポート済みで新規商品が作られている場合は、重複商品の削除、在庫、画像、公開状態の確認が別途必要になります。公式サポートの代行ではなく、CSV上で何が起きそうかを整理する実務メモとして扱ってください。初回相談では、Handle列の例を数行だけ伏せ字で共有できれば十分な場合があります。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Shopify CSVでバリエーションが壊れる前に見るOption列とVariant列

    Shopify CSVでバリエーションが壊れる前に見るOption列とVariant列

    Shopifyの商品CSVで色やサイズを触るときは、商品名よりも Option 列と Variant 列の関係を見る必要があります。価格だけ更新したつもりでも、Optionの値が少し変わると別バリエーションのように扱われ、SKUや在庫、Barcodeとの対応が崩れることがあります。

    まず何が起きているか

    Shopifyでは、同じ商品に複数の選択肢がある場合、Optionの組み合わせごとにバリエーションが作られます。たとえば「色」と「サイズ」がある商品なら、赤/S、赤/M、青/Sのような組み合わせがVariantになります。CSVではこの組み合わせを行で表すため、1つのセルだけでなく行全体の対応を見ます。

    よくある原因

    • Option1 Name を「Color」から「カラー」に変えて、既存データとずれる
    • Option1 Value の表記ゆれで同じ色が別扱いになる
    • SKU列だけ並べ替えられ、Option列との対応が崩れる
    • 価格、Barcode、重量などのVariant列を別バリエーションに入れてしまう
    • 単品商品からバリエーション商品へ変える作業を一括で行う

    確認する列

    まず Handle ごとに行をまとめます。その上で Option1 NameOption1 ValueOption2 NameOption2 ValueOption3 NameOption3 Value を見ます。次に Variant SKUVariant PriceVariant BarcodeVariant Inventory Tracker を横に並べ、Optionの組み合わせと一致しているか確認します。

    手作業で直す場合

    いきなり全商品を修正せず、代表的な1商品を管理画面で開き、現在のバリエーション一覧をCSVと照合します。Option名は既存の商品に合わせ、値の表記も「S」「M」「L」なのか「Small」「Medium」なのかを揃えます。SKUやBarcodeはOption列から自動で推測せず、仕入れ元データや現行エクスポートを正として見比べます。

    自動化できる部分

    チェックツール化しやすいのは、同一Handle内のOption組み合わせ重複、Option名の表記ゆれ、SKU空欄、SKU重複、Barcodeの桁や先頭0の欠落、価格の空欄です。投入前に「このHandleではバリエーション数が何件から何件に変わるか」を出すだけでも、事故はかなり見つけやすくなります。商品の選択肢をどう設計するかは、人間が販売方法を見て決める部分です。

    注意点

    バリエーションの修正は、商品ページの見た目だけでなく在庫、広告フィード、受注後のSKU確認にも影響します。CSVだけを見て正解を断定せず、管理画面と現在の受注・倉庫運用も確認してください。初回相談では、全CSVではなく問題が出ている1商品の列構成だけでも、壊れ方の整理はできます。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Shopify CSVの空欄は変更なしではなく空で上書きされるのか

    Shopify CSVの空欄は変更なしではなく空で上書きされるのか

    CSV更新で怖いのは、値を入れた列よりも「空欄の列」です。Shopify商品CSVを編集していると、空欄は何もしないという感覚になりがちですが、インポートの設定や列の扱いによっては、既存の商品情報を空の値で上書きする可能性があります。

    まず何を切り分けるか

    空欄には2種類あります。ひとつは「説明文を消したい」「Barcodeを空にしたい」という意図した空欄。もうひとつは「今回は触りたくない列だが、エクスポートしたCSVに空で入っている」という意図しない空欄です。この2つを同じCSVに混ぜると、投入前レビューが難しくなります。

    よくある事故

    • 商品説明やSEO titleが空欄で上書きされる
    • Variant Barcodeを消すつもりがないのに空になる
    • 画像URL列を並べ替えて、画像の紐づけが外れる
    • 公開状態、価格、重量など関係ない列まで同時に更新する
    • バックアップCSVがなく、どの値に戻すべきか分からなくなる

    確認する列

    更新したい列を先に決めます。たとえば価格だけを変えたいなら、Handle、Option列、Variant SKUVariant Price など、照合と更新に必要な列を中心に見ます。説明文、画像、SEO、Barcode、在庫関連など、今回触らない列に空欄が多い場合は、その列を含めてよいか慎重に判断します。

    手作業で進める手順

    まず現行の商品CSVをエクスポートして保管します。次に、更新用CSVの列を「照合に必要」「今回更新する」「触らない」の3つに分けます。触らない列に空欄がある場合は、空欄の意味を確認するまで投入しないほうが無難です。少数の商品だけを対象にしたテストCSVを作り、管理画面でどう変わるか確認してから全件に広げます。

    自動化できる部分

    投入前チェックでは、空欄セルの数を列ごとに集計し、現行CSVでは値があるのに更新CSVでは空欄になっている場所を一覧化できます。「このCSVを入れると空になりそうな列」を事前に出せると、削除したい空欄と事故になりそうな空欄を分けやすくなります。最終的にその空欄を許可するかは、店舗側の作業意図で判断します。

    注意点

    CSVの挙動は、使う画面、インポート設定、列構成、アプリ連携によって確認が必要です。ここでは「必ずこうなる」とは言い切らず、投入前に何を見れば事故を減らせるかに絞っています。初回相談ではCSV全体を送る必要はありません。更新したい列、空欄が不安な列、過去に消えた項目を整理できれば十分です。

    参考にした公式情報

    この記事の内容で困っている方へ

    Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する