Shopify商品CSVを一括更新するとき、投稿後に「想定と違う列が書き換わっていた」という事故がよく起こります。差分previewを使ってどの列が・どう変わるかを投入前に一覧確認するのが、CSV事故を減らす一番確実な方法です。本記事では、商品CSVと在庫CSVそれぞれで確認すべき列・確認手順・よくある事故パターンを整理します。
差分previewとは
差分previewとは、更新前のCSV(元データ)と更新後のCSV(投入予定データ)を並べて比較し、変更箇所を一覧表示することです。Shopify管理画面のCSVインポート機能には差分表示がないため、スプレッドシートの関数やdiffツールを使って自分で比較することになります。
投入してから気づくより、投入前に見るほうが圧倒的にリスクが低いです。特に列数の多い商品CSVでは、1セルの違いが商品ページの表示崩れや在庫の消失につながります。
商品CSVで確認すべき主要列
商品CSVには数十列ありますが、差分previewで優先的に確認すべき列を以下の表にまとめました。
| 列名 | 確認ポイント | 事故の典型例 |
|---|---|---|
| Handle | 変更がないこと。商品の識別子なので書き換えると別商品になる | 意図しないHandle変更で新規商品が量産される |
| Title | 表示名の変更が意図通りか | HTMLタグが混入し商品ページが崩れる |
| Body (HTML) | HTML構造が壊れていないか | 改行コードの違いでレイアウト崩れ |
| Vendor | ベンダー名の表記ゆれがないか | 全角・半角スペースの違いで別ベンダー扱い |
| Type | 商品タイプの変更が妥当か | 空欄になってフィルタで除外される |
| Tags | タグの追加・削除が正しいか | カンマ区切りの誤りでタグが結合される |
| Published | TRUE/FALSEの変更に注意 | TRUE→FALSEで商品が非公開になる |
| Option1 Name / Value | オプション名と値の変更 | 値が空欄になりバリアントが無効化 |
| Variant SKU | SKUの書き換え・重複 | 先頭ゼロが消失(01234→1234) |
| Variant Barcode | バーコードの桁数保持 | JANコードの先頭ゼロが消える |
| Variant Inventory Tracker | shopifyのままか | 空白になると在庫追跡が無効になる |
| Variant Price | 価格変更の妥当性(特に0や極端な値) | 桁区切りのカンマが混入しエラー |
| Image Src | 画像URLが壊れていないか | URL末尾のスペースで画像404 |
| Image Alt Text | alt属性の変更 | 空欄になりSEO・アクセシビリティ悪化 |
| Status | active/draft/archivedの変更 | active→archivedで商品が消える |
Handle、Published、Statusの3列は、意図せず変更されていると被害が大きいため最優先で確認します。
在庫CSVで確認すべき列
在庫CSV(Inventory CSV)を使う場合、確認すべき列は商品CSVより少ないですが、在庫数の誤りは即座に販売トラブルにつながるため慎重に確認します。
| 列名 | 確認ポイント | 事故の典型例 |
|---|---|---|
| Handle | 商品CSVと同じく識別子の変更がないこと | 商品特定できず在庫が反映されない |
| Option1 Value | バリアント名の一致 | 表記ゆれで該当バリアントなし |
| Location | 拠点名が正確に一致しているか | 拠点名の不一致で該当拠点として認識されず、更新が反映されない |
| On hand (current) | 現在の在庫数(CSVエクスポート時点) | — |
| On hand (new) | 更新後の在庫数。On hand (current) との差分が想定内か確認 | 想定外の増減に気づかず反映される |
Location列はShopifyの拠点名と完全一致している必要があります。全角スペースや余白があると該当拠点として認識されず、在庫の更新が反映されない場合があるため、差分previewで文字レベルの確認をしてください。なお、在庫CSVではOn hand (current)(現在値)とOn hand (new)(更新値)の列が含まれており、両者を比較することで想定外の差分を事前に確認できます。
差分previewの手順
ステップ1:バックアップの取得
Shopify管理画面の「商品」→「すべての商品」→「エクスポート」から、現在の商品CSVをダウンロードします。これが比較元のファイルになります。
ステップ2:比較用シートの作成
GoogleスプレッドシートまたはExcelで以下の構成を作ります。
- シート1に元CSV(バックアップ)を貼り付ける
- シート2に投入予定CSVを貼り付ける
- シート3に両方をHandle列でVLOOKUPまたはXLOOKUPで突き合わせる
- 各列ごとに
=IF(Sheet1!A2<>Sheet2!A2, "CHANGED", "")のような条件式を入れる
Handle列をキーにして各行を対応付けるのが重要です。行番号での比較は、並び順が変わっている場合にずれます。
ステップ3:差分の確認
条件式で”CHANGED”と出たセルを上の表の優先列から順に確認します。確認するのは次の点です。
- 変更が意図的か(自分で編集した箇所か)
- 意図しない変更が混入していないか(Excelの自動変換、文字コード変換など)
- 空白セルが意図せず作られていないか
ステップ4:テスト商品での検証
可能であれば、1〜2商品だけのCSVを作成して本番環境に投入し、結果を確認してから全体を投入します。
よくある事故パターンと対策
差分previewで特に注意すべき典型的な事故をまとめます。
| 事故パターン | 原因 | previewでの見つけ方 |
|---|---|---|
| 先頭ゼロの消失 | Excelで開くとSKUやバーコードの先頭ゼロが削除される | Variant SKU・Variant Barcode列の桁数を確認 |
| 文字化け | UTF-8とShift-JISの混在 | 日本語列(Title、Body等)の文字比較 |
| 日付の自動変換 | Excelが文字列を日付型に変換(例:1-2→1月2日) | Option Value列で日付っぽい値がないか確認 |
| 改行コードの違い | LF/CRLFの混在でBody (HTML)が壊れる | Body (HTML)列の改行位置を比較 |
| HTMLタグの破損 | CSVエディタがタグを解釈して書き換える | Body (HTML)列のタグ構造を文字列比較 |
| 画像URLの末尾スペース | コピペ時に入る不可視文字 | Image Src列をLEN関数で文字数比較 |
| 価格のカンマ混入 | 1,980のような表記が数値として認識されない | Variant Price列でカンマ検索 |
| Publishedの意図しない変更 | TRUE/FALSEが空白や別値に書き換わる | Published列が空白になっていないか確認 |
先頭ゼロの消失はExcelでCSVを開いた瞬間に発生するため、差分previewは必ずスプレッドシートアプリまたはテキストエディタで行ってください。Excelで開いた時点でデータが変質している可能性があります。
自動で確認できる部分
差分previewの過程で、スクリプトや関数で機械的にチェックできる項目があります。
- 列名の一致確認:元CSVと投入CSVで列の並び・名前が同じか
- Handleの重複チェック:同一Handleが複数行あるか(バリアントを除く)
- 必須列の空白チェック:Title、Handle、Variant SKUなどが空になっていないか
- データ型のチェック:Variant Priceが数値、PublishedがTRUE/FALSEなど
- URL形式のチェック:Image Srcがhttps://で始まっているか
- 差分行数のカウント:何行・何セルに変更があるかの合計
これらはPythonスクリプトやスプレッドシートの条件付き書式で自動化できます。列名の不一致は投入エラーの直接的な原因になるため、最初に確認してください。
人間が判断すべき部分
機械的なチェックでは判断できない項目もあります。ここは担当者のビジネス判断が必要です。
- どの列を実際に更新するか:列が変わっていても、その変更が業務上必要かどうか
- 価格変更の妥当性:数値としては正しくても、価格設定として適切か(誤って0円になっていないかなど)
- ステータス変更の影響:active→draftやarchivedにする意図があるか、非公開になる商品がないか
- 在庫数の増減理由:On handが大きく変わっている場合、その理由が正しいか
- 復旧方針:問題が起きた場合、どのバックアップから戻すか、どの範囲を対象にするか
特に価格とステータスは、機械チェックが通っても業務上の重大な影響を生む可能性があるため、必ず目視で確認してください。
投入前チェックリスト
CSVを投入する前に、以下の項目を順番に確認します。
| No. | 確認項目 | 確認方法 |
|---|---|---|
| 1 | バックアップCSVを取得した | 管理画面のエクスポート機能 |
| 2 | 投入CSVの列名がShopifyの仕様と一致する | 1行目の列名を目視比較 |
| 3 | Handle列に変更がない(意図的でなければ) | 差分previewでHandle列を確認 |
| 4 | Published列とStatus列が意図通り | TRUE/FALSE、active/draft/archived |
| 5 | Variant Priceに0や極端な値がない | 価格列をソートして確認 |
| 6 | Variant SKUとBarcodeの先頭ゼロが保持されている | 文字列比較または桁数チェック |
| 7 | Image SrcのURLが有効 | URL形式チェック |
| 8 | Body (HTML)が壊れていない | タグ構造の比較 |
| 9 | 意図しない空白セルがない | 空白セルのカウント |
| 10 | テスト投入で結果を確認した(可能な場合) | 1〜2商品でのテスト投入 |
差分previewに便利なツール
スプレッドシートの関数だけでなく、専用ツールを使うと効率よく差分を確認できます。
- Visual Studio Code:テキストファイルとしてCSVを開き、Compare機能で差分表示。セル単位ではないが行単位の差分を素早く確認できる
- csvdiff(Pythonライブラリ):CSV専用のdiffツール。キー列を指定して行単位の差分を出力
- Delta Walker / Beyond Compare:商用diffツール。CSVモードがあり列単位の比較が可能
- GoogleスプレッドシートのCONDITIONAL FORMAT:条件付き書式で変更のあったセルをハイライト。手軽で実用的
列数が多い商品CSVでは、Handle列をキーにして変更のあった列だけを抽出すると見やすくなります。全列を一度に比較すると差分の量が多すぎて見落としが発生するため、優先列から段階的に確認することをお勧めします。
まとめ
ShopifyのCSV一括更新で事故を防ぐには、Handle・Published・Status・Price・SKU・Barcode・Image Src・Body (HTML)の主要列を差分previewで確認することが重要です。機械的なチェック(列名一致、重複、空白、型チェック)を自動化し、価格とステータスの妥当性は人間が判断する——この分担で投入リスクを大幅に下げられます。
相談時に用意するとよい情報
- 更新前のShopifyエクスポートCSV(バックアップ)
- 投入予定のCSVファイル
- 変更したい列・変更したくない列のリスト
- 過去にCSV投入で起きた事故の有無と内容
- 使用しているCSVエディタ(Excel、スプレッドシート、テキストエディタなど)
初回相談では機密CSVやスクリーンショットの送付は不要です。まずは状況を言葉でお聞かせください。
参考にした公式情報
- Shopify Help Center: Product details
- Shopify Help Center: Exporting and importing inventory with a CSV file
Shopify CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。
無料診断を依頼する
