Category: CSV・データ処理

  • Shopify CSVの差分previewで先に見るべき列

    Shopify CSVの差分previewで先に見るべき列

    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. シート1に元CSV(バックアップ)を貼り付ける
    2. シート2に投入予定CSVを貼り付ける
    3. シート3に両方をHandle列でVLOOKUPまたはXLOOKUPで突き合わせる
    4. 各列ごとに =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 CSV / 一括編集 まわりの作業を、まず無料診断で修正TODOに分けます。初回相談で機密CSVやスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • CSVをGoogle Sheetsで編集するときに壊れやすい商品データ

    CSVをGoogle Sheetsで編集するときに壊れやすい商品データ

    Shopifyの商品CSVをGoogle Sheetsで開いて編集すると、JANコードの先頭ゼロが消えたり、日付が勝手に変換されたりして、アップロード時にエラーになることがあります。壊れやすい列は決まっているので、事前に把握しておけば被害を最小限に抑えられます。本記事では、Google SheetsがCSVデータを壊す典型的なパターンと、安全に編集するための手順をまとめました。

    なぜGoogle SheetsでCSVが壊れるのか

    Google SheetsはCSVをインポートするとき、各セルの内容を自動的に型判定します。数値っぽければ数値、日付っぽければ日付、通貨記号があれば通貨フォーマットとして解釈します。この自動判定が、商品データ特有の文字列を勝手に変換してしまう原因です。

    特に以下の列で被害が集中します。

    列名 壊れ方 影響
    Variant Barcode 先頭ゼロが消失、科学表記に変換 JANコード不一致で在庫連携エラー
    Variant Price 通貨記号の付加、小数桁の丸め 価格が反映されない
    Created At / Updated At 日付フォーマットの強制変換 タイムゾーンずれ、フォーマット不一致
    Body HTML HTMLタグの改行位置が崩れる 商品説明のレイアウト崩れ
    Tags カンマ区切りがセル区切りと混同 タグの欠落や結合
    Handle 先頭ゼロやハイフン区切りの変形 URL不一致で404
    Variant Image 改行を含む画像URLの切断 画像紐付け失敗

    壊れやすい列の具体例

    JANコード(Variant Barcode)の先頭ゼロ消失

    JANコード 49012345678900012345678901 のような値は、Google Sheetsにとって「数値」に見えます。インポート直後に以下のような変化が起きます。

    • 001234567890112345678901(先頭ゼロ2桁消失)
    • 49012345678901234.90123E+15(科学表記に変換)
    • 00000012345671234567(先頭ゼロ6桁消失)

    JANコードは13桁または14桁の固定長文字列です。先頭ゼロが消えると、在庫システムやPOSとの連携で「該当商品なし」エラーになります。一度保存してしまうと、元のゼロが何桁だったか分からなくなるケースもあります。

    日付列(Created At / Updated At)の自動変換

    ShopifyのCSVでは日付が 2025-01-15T09:30:00+09:00 のようなISO 8601形式で出力されます。Google Sheetsはこれを独自の日付フォーマットに変換します。

    • 2025-01-15T09:30:00+09:002025/01/15 9:30(フォーマット変更)
    • タイムゾーン表記(+09:00)が消える
    • 再エクスポート時のフォーマットがShopifyと不一致

    Shopifyへの再インポート時にフォーマットエラーになることがあります。

    通貨フォーマット(Variant Price / Compare At Price)

    価格列に 2980 と入っている値が、シートのロケール設定によっては ¥2,980$2,980.00 として表示されることがあります。セルの表示は変わっても内部値が変わっていなければ問題ないのですが、表示された値をコピーして別のセルに貼り付けると、通貨記号付きの文字列として上書きされてしまいます。

    Body HTMLの改行崩れ

    商品説明のHTMLには <br><p> タグが含まれます。CSV内では改行文字(n)を含むセルが引用符で囲まれていますが、Google Sheetsがこれを展開すると、タグの途中で改行が入ることがあります。

    <ul><li>サイズ:S/M/L</li><li>素材:綿100%</li></ul>

    が、次のように崩れます。

    <ul>
    <li>サイズ:S/M/L</li>
    <li>素材:綿100%</li>
    </ul>

    HTMLとしての動作は同じでも、再度CSV出力すると改行が余分に入り、Shopify側での表示に影響する可能性があります。

    Tags列のカンマ問題

    Tags列は tag1, tag2, tag3 のようにカンマ区切りで格納されます。CSV自体もカンマ区切りなので、引用符の扱いが適切でないと、タグの区切りとセルの区切りが混同され、列ずれを起こします。

    安全にインポートする方法

    方法1: ファイル > インポートで区切り文字を明示指定

    1. Google Sheetsで空のスプレッドシートを開く
    2. ファイル → インポートを選択
    3. CSVファイルをアップロード
    4. インポート設定で以下を確認
      • 区切り文字: カンマ(自動検出に頼らない)
      • インポート先: 現在のシートのセルA1
    5. インポート直後にJANコード列の表示を確認

    方法2: テキストとして貼り付け

    CSVの中身をテキストエディタで開き、特定の列だけをコピーしてシートに貼り付ける場合は、Ctrl+Shift+V(テキストとして貼り付け)を使います。ただし列ごとの対応管理が難しいため、大量データには不向きです。

    方法3: ローカルでの事前確認とCSVエディタの活用

    Google Sheetsにインポートする前に、テキストエディタや専用のCSVエディタでデータの確認を行う方法もあります。VS CodeやCSV専用エディタを使えば、型変換のリスクなしに列の確認や差分のチェックができます。また、差分ツール(csvdiffなど)を使えば、編集前後のCSVを比較して意図しない変更を検出できます。

    なお、=IMPORTDATA("URL") 関数を使う方法もありますが、この場合はCSVを公開URLに配置する必要があります。機密性のある商品CSVを公開URLに置くことは避けてください。IMPORTDATAを使う場合は、非機密の検証用データのみに限定し、実際の商品データには使用しないことを推奨します。

    推奨ワークフロー

    商品CSVをGoogle Sheetsで扱う場合の安全な手順をまとめます。

    1. 元ファイルのバックアップ: 編集前のCSVを別名で保存しておく
    2. インポート: ファイル → インポートで区切り文字をカンマに指定
    3. 被害確認: JANコード、日付、価格列の表示を即座にチェック
    4. 安全な列だけ編集: 以下の列はSheetsで編集しても比較的安全
      • Title(商品名)
      • Vendor(ベンダー)
      • Product Category
      • SEO Title / SEO Description
      • Status(draft / active)
    5. 危険な列は編集しない: 以下の列はテキストエディタや専用ツールで扱う
      • Variant Barcode(JANコード)
      • Body HTML
      • Created At / Updated At
      • Variant Image
    6. エクスポート: ファイル → ダウンロード → カンマ区切り形式(.csv)
    7. 差分確認: エクスポートしたCSVと元ファイルを比較ツールで照合

    自動で確認できる部分

    スクリプトや比較ツールで機械的にチェックできる項目です。CSVをエクスポートした直後に実行すると効率的です。

    確認項目 チェック方法 期待される結果
    JANコードの桁数 文字列長が13または14であることを確認 先頭ゼロ消失を検出
    日付フォーマット ISO 8601形式(Tを含む)か正規表現で確認 自動変換による崩れを検出
    HTMLタグの整合性 開始タグと終了タグのペアを数える 改行によるタグ切断を検出
    列数 各行のカンマ数を数える(ヘッダー行と一致するか) 列ずれを検出
    空行の有無 行末の不要な改行を確認 余分なレコードの発生を防止
    文字エンコーディング UTF-8 BOMの有無を確認 文字化けを防止

    Pythonやシェルスクリプトで簡単に実装できるため、Shopifyへアップロードする前に毎回実行することをおすすめします。

    # JANコード桁数チェックの例(Python)
    import csv
    with open("products.csv", encoding="utf-8-sig") as f:
        reader = csv.DictReader(f)
        for i, row in enumerate(reader, 2):
            barcode = row.get("Variant Barcode", "")
            if barcode and len(barcode) not in (13, 14):
                print(f"行 {i}: JANコード異常 → '{barcode}'")

    人間が判断すべき部分

    自動チェックではカバーできない、担当者の判断が必要な項目です。

    • どの列をSheetsで編集し、どの列をテキストエディタで編集するか: 商品データの特性(HTMLの複雑さ、JANコードの有無)によって最適なツールが変わります
    • 共同編集時の担当範囲の分割: 同じシートを複数人で編集する場合、列単位で担当を分けると誤操作を減らせます
    • Body HTMLの編集可否: HTMLをSheetsで触るべきか、Shopify管理画面で触るべきかの判断
    • エクスポート後の差分の意味解釈: 差分ツールで変更が見つかった場合、それが意図的か非意図的(自動変換によるもの)かの判別
    • 列の追加・削除の判断: ShopifyのCSV仕様変更に伴う列の増減への対応

    共同編集時の注意点

    Google Sheetsの強みである共同編集は、CSVデータにおいては諸刃の剣です。

    • 同時編集による上書き: 複数人が同じセルを同時に編集すると、意図しない値で上書きされることがあります
    • フィルタやソートの共有: 一方がソートを実行している間に他方が編集すると、行の対応関係が崩れる可能性があります
    • 編集履歴の確認: ファイル → バージョン履歴 で誰がいつどのセルを変更したか確認できます。壊れに気づいたらまず履歴を遡ってください

    安全な列と危険な列の早見表

    列名 Sheetsでの編集 推奨ツール 理由
    Title 安全 Sheets プレーンテキストのため変換の危険なし
    Vendor 安全 Sheets プレーンテキスト
    Product Category 安全 Sheets プレーンテキスト
    Status 安全 Sheets 固定値(active/draft/archived)
    SEO Title 安全 Sheets プレーンテキスト
    Variant Barcode 危険 テキストエディタ 先頭ゼロ消失、科学表記化
    Variant Price 要注意 Sheets(注意深く) 通貨フォーマット化に注意
    Body HTML 危険 テキストエディタ / 管理画面 改行崩れ、タグ切断
    Created At 危険 触らない 日付フォーマット強制変換
    Tags 要注意 テキストエディタ推奨 カンマによる列ずれ
    Variant Image 危険 テキストエディタ URL内改行、画像srcの切断
    Handle 要注意 Sheets(注意深く) 先頭ゼロ消失に注意

    エクスポート時の最終チェックリスト

    CSVをエクスポートしてShopifyにアップロードする前に、以下の項目を確認してください。

    • JANコード列のすべての値が13桁または14桁の文字列になっている
    • 日付列に T を含むISO 8601形式が維持されている
    • 価格列に通貨記号(¥、$)が含まれていない
    • Body HTML列のタグが改行で切断されていない
    • 各行の列数がヘッダー行と一致している
    • 文字エンコーディングがUTF-8(BOMなしまたはBOM付き)である
    • 最終行の後に余分な空行がない
    • 引用符のエスケープ("")が正しく処理されている

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

    CSV編集のトラブルでご相談いただく際は、以下の情報があるとスムーズです。

    • 使用しているCSVの列構成(Shopify標準フォーマットか、独自に列を追加しているか)
    • 壊れたと感じる具体的な列名と症状(JANコードの桁数、日付のフォーマットなど)
    • Google Sheetsでの操作手順(インポート方法、編集した列、エクスポート方法)
    • 元のCSVファイル(壊れる前の状態が分かるもの)
    • 共同編集の有無と編集人数

    初回相談では機密CSVやスクリーンショットの送付は不要です。上記の情報をおおよそでお伝えいただければ、状況の整理から始められます。

    参考にした公式情報

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

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

    無料診断を依頼する
  • 仕入先CSVをShopify CSVに変換する前に見ること

    仕入先CSVをShopify CSVに変換する前に見ること

    仕入先から受け取ったCSVをそのままShopifyにインポートしても、列の並びや形式が合わずエラーになることがほとんどです。変換ツールを動かす前に、まず「仕入先CSVのどの列をShopify CSVのどの列に対応させるか」を整理しておくことが大切です。この記事では、変換前に確認すべき列対応表の作成手順と、よくあるつまずきポイントをまとめます。

    なぜ「変換前に整理する」が必要なのか

    仕入先ごとにCSVのフォーマットは異なります。列名、並び順、文字コード、日付形式がバラバラです。Shopifyが受け付ける商品CSVも、決まった列名と形式があります。

    両者を対応させる「マッピング」を明確にしておかないと、次のような問題が起きます。

    • 必須列が欠けていてインポートエラーになる
    • 価格や在庫数の列がずれて間違った値が入る
    • 文字化けや改行の崩れでデータが途切れる
    • 変換後の修正に手戻りが大きくなる

    まずは両方のCSVのヘッダー行(1行目)を並べて、対応関係を書き出すところから始めましょう。

    Shopify商品CSVの主な必須列

    Shopifyの商品CSVで最低限必要な列を確認しておきます。

    Shopifyの列名 役割 必須かどうか
    Title 商品名 必須(最初の行)
    Handle URL用の識別子。重複不可 必須
    Variant SKU SKUコード 推奨
    Variant Price 販売価格 必須(バリアント行)
    Inventory quantity 在庫数(単一ロケーション前提) 推奨(※複数ロケーションの場合はinventory CSVを使用)
    Variant Barcode JAN・バーコード 任意
    Image Src 商品画像URL 任意
    Body HTML 商品説明文 任意
    Vendor 仕入先・ブランド名 任意
    Product Category 商品カテゴリ 任意
    Published 公開状態(TRUE/FALSE) 任意

    Handleは商品ごとに一意である必要があります。英数字とハイフンのみ使用でき、商品名から自動生成することもできます。

    在庫数の取り扱いには注意が必要です。上記のInventory quantity単一ロケーション前提の商品CSVで在庫を管理する場合に使用します。複数の倉庫や店舗など複数ロケーションで在庫を管理している場合は、商品CSVではなくinventory CSV(在庫CSV)を使ってロケーションごとの在庫数を管理する必要があります。仕入先CSVの在庫数をShopifyに反映する際は、運用中のロケーション構成に合わせて商品CSVとinventory CSVのどちらを使うかを決めてください。

    列対応表(マッピング表)の作成手順

    手順1:両方のCSVヘッダーを取り出す

    仕入先CSVの1行目と、Shopify CSVの1行目をそれぞれテキストエディタに貼り付けます。

    # 仕入先CSVのヘッダー例
    商品コード,商品名,上代,下代,JANコード,カラー,サイズ,画像URL,カテゴリ,在庫数
    
    # Shopify CSVのヘッダー例(抜粋)
    Handle,Title,Body HTML,Vendor,Product Category,Type,Tags,Published,Variant SKU,Variant Price,Variant Compare At Price,Variant Barcode,Inventory quantity,Image Src
    

    手順2:対応する列を線で結ぶ

    スプレッドシートや紙に両方の列名を書き出し、どの列をどの列に変換するかを決めます。

    仕入先CSVの列 Shopify CSVの列 変換ルール 備考
    商品名 Title そのままコピー 全角スペースや特殊文字に注意
    商品コード Handle 英数字以外をハイフンに置換 重複しないこと
    商品コード Variant SKU そのままコピー HandleとSKUを同じ値にすることも可
    下代 Variant Price 数値のみに整形(カンマ除去) 税込・税外の確認が必要
    上代 Variant Compare At Price 数値のみに整形 希望小売価格として表示
    JANコード Variant Barcode そのままコピー ハイフン除去の必要性を確認
    画像URL Image Src URLとして有効か確認 空白の場合は後で画像を追加
    カテゴリ Product Category Shopifyカテゴリ名に変換 名前の対応表を別途作成
    在庫数 Inventory quantity 数値のみに整形 商品CSVは単一ロケーション前提。複数拠点の場合はinventory CSVを別途用意
    (なし) Vendor 仕入先名を固定値で設定 全商品に共通
    (なし) Published FALSE を固定値で設定 確認後に手動で公開

    手順3:対応先がない列を確認する

    仕入先CSVにあってShopify CSVにそのまま入れられない列を洗い出します。

    • カラー・サイズなどのバリアント情報 → Shopifyでは別の列(Option1 Name / Option1 Value など)に分けて入力する必要がある
    • 仕入先独自のステータス列 → Shopify側の対応列がないため、変換対象から外す
    • 複数行にわたる商品説明 → HTMLタグに変換して Body HTML に入れるか、別途用意する

    手順4:デフォルト値を決める

    仕入先CSVに該当データがなくても、Shopify側で設定しておきたい項目のデフォルト値を決めておきます。

    Shopify列 デフォルト値 理由
    Vendor 仕入先名(固定) フィルター用に統一
    Published FALSE 内容確認後に手動公開するため
    Variant Inventory Tracked TRUE 在庫管理を行う場合
    ※在庫数の反映先 単一ロケーションの場合は商品CSV、複数ロケーションの場合はinventory CSVに分ける 複数拠点の在庫を一括管理する際はinventory CSVが必要
    Variant Inventory Policy deny 在庫なし時は購入不可にする
    Variant Taxable TRUE 課税対象商品の場合

    手順5:1商品だけでテスト変換する

    マッピング表ができたら、まずは1行だけ変換してShopifyにインポートできるか確認します。複数バリアントがある場合は、その商品の全バリアント行をまとめてテストします。

    よくある変換時の注意点

    文字コード

    仕入先CSVがShift-JISの場合が多く、ShopifyはUTF-8を前提としています。変換前に文字コードを確認し、必要に応じてUTF-8に変換します。

    価格の整形

    「¥1,980」や「1,980円」のようにカンマや通貨記号が含まれている場合、数値のみに変換する必要があります。

    # 変換前
    ¥1,980
    
    # 変換後
    1980
    

    バリアントの展開

    カラー・サイズなどが1行にまとまっている場合、Shopifyではバリアントごとに1行ずつ展開する必要があります。

    ケース 仕入先CSVでの表現 Shopify CSVでの表現
    1商品1サイズ 1行 1行
    1商品3カラー 1行に「赤/青/黒」 3行(Handleは同じ)
    2サイズ×3カラー 1行に組み合わせ一覧 6行(Handleは同じ)

    自動で確認できる部分

    次の項目は、スクリプトやツールで機械的にチェックできます。

    • 仕入先CSVの列がすべてマッピング表に含まれているか
    • Shopifyの必須列(Title, Handle, Variant Price)がすべて何らかの値で埋まるか
    • Handleの一意性(重複していないか)
    • Variant Priceが数値として有効か(カンマや通貨記号が混じっていないか)
    • JANコードの桁数が妥当か(8桁または13桁)
    • 画像URLが http または https で始まっているか
    • 文字コードがUTF-8であるか
    • 改行コードが統一されているか

    人間が判断すべき部分

    次の項目は、運用方針やビジネス判断が必要です。

    • どの仕入先列をTitleに使い、どの列をDescription(Body HTML)に使うか
    • 販売価格(Variant Price)を仕切り値からどう設定するか(マークアップ率の決定)
    • バリアントをどう展開するか(カラー×サイズなど)
    • 在庫なし商品をどう扱うか(非表示にするか、在庫なしで表示するか)
    • 商品カテゴリをShopifyのどのカテゴリに分類するか
    • 仕入先の更新頻度に合わせて、定期的に再インポートするかどうか

    変換前チェックリスト

    変換作業を始める前に、次の項目を確認してください。

    # 確認項目 確認済み
    1 仕入先CSVのサンプル(ヘッダー+数行)を入手した
    2 Shopify商品CSVのテンプレートを確認した
    3 列対応表(マッピング表)を作成した
    4 必須列がすべてカバーされていることを確認した
    5 文字コードがUTF-8であることを確認した
    6 デフォルト値を決定した
    7 バリアント展開のルールを決めた
    8 1商品でテスト変換を行った
    9 価格設定の方針を決めた
    10 エラー発生時の連絡先・対応フローを確認した

    まとめ

    仕入先CSVをShopify CSVに変換する前の段階で、列対応表をしっかり作っておくことで、変換後の手戻りを大幅に減らせます。特に必須列のカバー、価格の整形、バリアントの展開は、事前に決めておくべき重要ポイントです。

    1商品だけのテストインポートで問題なければ、そのマッピング表を基に一括変換に進むことができます。

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

    • 仕入先CSVのサンプル(ヘッダー+数行分で構いません)
    • ShopifyストアのURL
    • 変換したい商品のおおよその件数
    • バリアントの有無(カラー・サイズなど)
    • 販売価格の設定方針(仕切り値に対するマークアップ率など)
    • これまでに試したインポート手順(エラーメッセージがあれば添えてください)

    初回相談では機密CSVやスクリーンショットの送付は不要です。まずはお気軽にご相談ください。

    参考にした公式情報

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

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

    無料診断を依頼する
  • CSVの列名が英語で分からないときの読み替え表を作る考え方

    CSVの列名が英語で分からないときの読み替え表を作る考え方

    外部システムから出力されるCSVの列名が英語だと、毎回「これは何の項目だっけ?」と探す手間がかかります。英語列名と日本語の業務項目名を対応づけた「読み替え表」を1回だけ作っておけば、以降の作業が格段に速くなります。本記事では、Shopifyの商品CSVを具体例に、読み替え表の作り方と運用上の注意点をまとめます。自動で確認できる部分と人間が判断すべき部分も分けて解説します。

    読み替え表とは何か

    読み替え表とは、CSVの英語列名に対して「日本語の業務意味」「必須か任意か」「変換ルール」をまとめた一覧表です。外部システム(Shopify、Amazon、楽天など)が出力するCSVは列名が英語で、しかもシステムごとに命名規則が異なります。読み替え表をチーム内で共有しておけば、担当者が変わっても同じ基準で作業できます。

    具体例:Shopify商品CSVの読み替え表

    以下はShopifyの商品CSVでよく使われる列名を整理した例です。実際の運用では、自社が使う列だけを抽出して使います。

    英語列名 日本語意味 必須/任意 変換ルール 備考
    Handle 商品URL識別子 必須 小文字・ハイフン区切り 商品ごとに一意
    Title 商品名 必須 そのまま使用 管理画面の表示名
    Body HTML 商品説明文 任意 HTMLタグを保持 改行は<br>で表現
    Vendor ブランド・メーカー 任意 そのまま使用 未入力可
    Type 商品タイプ 任意 カテゴリ名と揃える 例:衣類、食品
    Tags タグ 任意 カンマ区切り 複数指定可
    Published 公開状態 任意 TRUE/FALSE true: 公開、false: 非表示。空欄時の扱いは環境によるため確認が必要
    Variant SKU SKUコード 任意 半角英数字 在庫管理で使用
    Variant Barcode JAN・バーコード 任意 数字のみ 先頭ゼロを保持
    Variant Price 販売価格 任意 数値・小数点2桁 空欄の場合は未設定や0として扱われる可能性があるため注意
    Image Src 画像URL 任意 URL形式 複数画像は行を分ける
    Image Position 画像表示順 任意 1からの連番 自動採番される場合あり
    Inventory quantity 在庫数 任意 整数 商品CSVでは単一ロケーション前提。複数ロケーションの場合はinventory CSVを使用

    この表をスプレッドシートで作っておき、CSVのヘッダー行と付き合わせて使います。

    読み替え表を作る5つのステップ

    ステップ1:CSVのヘッダー行を書き出す

    対象システムからCSVをエクスポートし、1行目のヘッダーだけを抽出します。Shopifyの場合は商品エクスポート機能でCSVをダウンロードし、先頭行をコピーします。

    Handle,Title,Body HTML,Vendor,Type,Tags,Published,Option1 Name,Option1 Value,Variant SKU,Variant Price,Inventory quantity,Image Src,Image Position

    ステップ2:日本語の意味を付ける

    各列名に対して、自社の業務用語で「何を表す項目か」を書きます。公式ドキュメントを参考にしつつ、社内で通じる表現に訳すのがポイントです。たとえば「Handle」は公式には「ハンドル」と書かれていますが、業務上は「商品URL識別子」の方が分かりやすいことが多いです。

    ステップ3:必須か任意かを記載する

    システム上の必須列と、自社運用で必須にしたい列を分けて記載します。システム上は任意でも、社内ルールで必ず入力する項目(たとえば「Variant SKU」)があれば、その旨も備考欄に書いておきます。

    ステップ4:変換ルールを追加する

    列ごとに「データをどう扱うか」のルールを書きます。以下のような項目を整理します。

    • 文字種の制限(半角英数字のみ、全角不可など)
    • 桁数や形式(価格は小数点2桁、JANコードは13桁など)
    • 区切り文字(タグはカンマ区切り、複数値の表記方法など)
    • 空欄時の挙動(エラーになるか、デフォルト値が入るか)

    ステップ5:チームで共有して運用する

    完成した表はスプレッドシートや社内Wikiに共有し、CSV作業の手順書に組み込みます。列名が追加・変更された際は、表も合わせて更新する運用ルールを決めておきます。

    よくある混乱ポイント

    読み替え表を作る際、つまずきやすいポイントをいくつか挙げます。

    似た名前の列が複数ある

    ShopifyのCSVでは「Published」と「Status」など、意味が近い列が存在します。このような場合は、各列の具体的な違いを備考欄に明記します。

    列名 意味の違い
    Published TRUE/FALSEで公開・非公開を表す
    Status active/draft/archivedの3状態を表す

    任意だけど実質必須の列がある

    システム上は任意でも、商品として成立させるために実質必須な列があります。「Variant Price」は任意項目ですが、販売する商品なら価格は必須です。読み替え表では「システム上:任意/運用上:必須」と二段階で記載することをおすすめします。

    値が自動で変わる列がある

    「Image Position」などは、インポート時にシステム側で自動採番されることがあります。CSVで明示的に指定しても、結果が変わる可能性があるため、備考欄に「自動変更の可能性あり」と書いておきます。

    自動で確認できる部分

    読み替え表をもとに、スクリプトや関数で自動チェックできる項目があります。

    • CSVヘッダーと読み替え表の列名が一致しているか
    • 必須列がすべてCSVに存在するか
    • 各列のデータが指定された形式(数値、日付、TRUE/FALSEなど)に合っているか
    • Variant Priceが数値で、小数点以下2桁以内か
    • Variant Barcodeが数字のみで構成されているか
    • Handleに大文字やスペースが含まれていないか

    これらはExcel関数やPythonスクリプトで機械的に検出できるため、作業のたびに目視で確認する必要はありません。

    人間が判断すべき部分

    自動チェックでは対応できない、業務判断が必要な項目もあります。

    • どの列を自社の運用で使うか(すべての列を使う必要はない)
    • 日本語の業務意味として、どの表現が社内で最も通じるか
    • 似た意味の列(Published vs Status)をどう使い分けるか
    • 空欄を許容するか、デフォルト値を設定するか
    • 列の追加・変更があった際、読み替え表をどう更新するか

    これらは業務フローや社内ルールに関わるため、現場の担当者が判断する必要があります。

    読み替え表の運用チェックリスト

    読み替え表を作成・更新する際の確認項目をまとめました。

    確認項目 確認方法 自動/手動
    CSVヘッダーと表の列名が一致する スクリプトで比較 自動
    必須列がCSVに含まれている スクリプトで存在確認 自動
    データ形式がルール通り 正規表現で検証 自動
    日本語意味が社内で通じる 担当者間で確認 手動
    似た列名の使い分けが明記されている 表をレビュー 手動
    システム更新で列が追加されていないか リリースノート確認 手動
    運用上必須の列に印がついている 表をレビュー 手動

    読み替え表のテンプレート

    新しいシステムのCSVに出会ったとき、すぐに使えるテンプレートの列構成を紹介します。

    1. 英語列名 — CSVのヘッダー名をそのまま記載
    2. 日本語意味 — 社内で通じる業務項目名
    3. 必須/任意 — システム上の必須・任意に加え、運用上の必須も併記
    4. 変換ルール — 文字種、桁数、形式の指定
    5. 備考 — 空欄時の挙動、似た列名との違い、自動変更の有無

    この5列を基本にして、必要に応じて「入力例」列や「確認方法」列を追加します。

    まとめ

    英語の列名に戸惑う時間を減らすには、読み替え表を一度だけしっかり作ることが効果的です。自動チェックできる部分はスクリプトに任せ、人間の判断が必要な部分に時間を集中させることで、CSV作業の精度と速度が向上します。

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

    • 対象システム名とエクスポートしたCSVのヘッダー行(1行目)
    • 現在手作業で読み替えている列の対応関係(メモ書きで可)
    • 社内で特に混乱しやすい列名(あれば)
    • CSVの件数と更新頻度(毎日・毎週・不定期など)
    • 現在の作業手順の簡単なメモ

    初回相談では機密CSVやスクリーンショットの送付は不要です。上記の情報があれば、読み替え表の作り方や自動化の方向性についてご案内できます。

    参考にした公式情報

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

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

    無料診断を依頼する
  • Tags列をCSVで一括編集するときに既存タグを消さないための考え方

    Tags列をCSVで一括編集するときに既存タグを消さないための考え方

    結論:CSVインポートは「上書き」だから、元のタグを自分で保持しないと消える

    Shopifyの商品CSVでTags列を編集してインポートすると、そのセルの内容で既存タグがすべて置き換わります。新しいタグだけを書いてインポートすると、書かなかったタグはすべて消える仕組みです。これを防ぐには、①現在のTags列をエクスポートして確認する、②追加したいタグだけを追記する、③インポート前に差分を検証するという3ステップを踏むのが最も確実です。


    Tags列の仕組みをおさらいする

    CSV内でのタグの書式

    Shopifyの商品CSVでは、Tags列は1つのセル内にカンマ区切りでタグを並べる形式です。たとえば次のようになります。

    新商品,セール,夏季コレクション

    ここで気をつけたいポイントは2つあります。

    • セルの区切り文字(CSVのカンマ)と、タグの区切り文字(同じくカンマ)が同じ記号なので、スプレッドシートで開くとタグが別列に分裂することがある
    • タグ名にカンマを含めることはできない(カンマは区切りとして扱われる)

    インポート時の挙動:完全上書き

    CSVインポートでTags列を含めると、その商品のタグ全体がCSVの値で上書きされます。「追加」ではなく「置き換え」です。つまり次のような挙動になります。

    操作 元のタグ CSVに書いたTags インポート後
    タグを追加したい A, B A, B, C A, B, C(正しい)
    タグを追加(間違い) A, B C C(AとBが消えた)
    特定タグを削除したい A, B, C A, C A, C(Bだけ削除された)
    Tags列を空にした A, B, C (空) なし(全タグ消去)
    Tags列を省略した A, B, C (列なし) A, B, C(変更なし)

    Tags列そのものをCSVから省略した場合は既存タグが維持されます。しかし、他の列も編集している場合はTags列を省略できないことが多く、結局は「正しいタグ一覧を書く」必要が出てきます。


    安全なタグ編集ワークフロー

    ステップ1:現在のTags列をエクスポートして保存

    まず、管理画面から商品CSVをエクスポートします。このとき、Handle(ハンドル)列とTags列のペアを別シートにコピーして保存しておきます。これが「変更前」の記録です。

    エクスポート時の注意点:

    • 「すべての列」を選んでエクスポートする(一部列だとTagsが含まれないことがある)
    • エクスポート直後のファイルを「変更前」としてそのまま開かず別名保存する(誤操作防止)
    • スプレッドシートで開くときは「区切り文字としてカンマ」を正しく指定する

    ステップ2:追加・削除したいタグを反映する

    作業用シートでTags列を編集します。ここでの鉄則は「既存のタグ一覧に対して、追記または削除を行う」ことです。新しいタグだけを書くのではなく、残したいタグもすべて含めます。

    たとえば「セール」というタグを全商品に追加したい場合:

    変更前: 新商品,夏季コレクション
    変更後: 新商品,夏季コレクション,セール

    「旧価格」というタグを削除したい場合:

    変更前: 旧価格,新商品,夏季コレクション
    変更後: 新商品,夏季コレクション

    スプレッドシートの関数を使えば、追加作業を半自動化できます。

    =IF(A2="", "", IF(B2="", "セール", B2 & ",セール"))

    ここでA2がHandle、B2が元のTags列だとします。元のタグが空なら「セール」だけ、すでにタグがあれば末尾に「,セール」を追加します。

    ステップ3:差分を検証してからインポート

    インポート前に、変更前と変更後のTags列を比較します。この比較で意図しないタグの消失や、タグの重複を発見できます。

    検証のポイント:

    1. タグが減っていないか — 追加しかしていないはずなのにタグ数が減っていたら、上書きで消えた可能性が高い
    2. 重複タグがないか — 「セール,セール」のように同じタグが2回入っていないか確認する(Shopify側では自動でまとめられるが、見栄えが悪い上に意図の混同を招く)
    3. 空セルになっていないか — 編集ミスでTags列が空になっていると、インポート時に全タグが消える
    4. カンマの前後にスペースがないか — 「セール, 新商品」のようにスペースが入ると「 新商品」(先頭スペース付き)という別タグとして登録される

    タグ操作別のCSV上の扱いまとめ

    やりたいこと CSVでの正しい書き方 よくある間違い
    タグを追加する 既存タグ + 「,」 + 追加タグ 追加タグだけを書いて既存タグを消す
    特定のタグを削除する 残したいタグだけを列挙する 削除したいタグだけを空にする(全タグ消去になる)
    全タグを入れ替える 新しいタグ一覧を書く なし(この操作自体が上書きと同義)
    タグを一切変更しない Tags列をそのまま残す、または列ごと省略する Tags列を空にする
    タグを全削除する Tags列を空にする 全削除のつもりでTags列を省略する(何も変わらない)

    自動化できる確認と人間の判断

    スクリプトや関数で自動チェックできること

    • 重複タグの検出 — Tags列をカンマで分割し、同じ値が2回以上出現していないか確認
    • 前後スペースの検出 — タグの前後に空白文字が含まれていないか正規表現で検査
    • 空セルの検出 — Tags列が空の行が意図的かどうかのフラグ付け
    • 変更前後の差分抽出 — 2つのタグ一覧を比較し、追加されたタグと削除されたタグをリスト化
    • タグ数の急増・急減の警告 — ある商品のタグ数が大幅に変わっている場合にアラートを出す

    これらはスプレッドシートの関数やPythonスクリプトで比較的かんたんに実装できます。

    人間が判断すべきこと

    • どのタグを残し、どのタグを削除するか — ビジネス判断が必要な部分は自動化できない
    • キャンペーン終了後のタグ整理 — 「2025夏セール」など期限付きタグを残すべきかどうかの判断
    • 類似タグの統合 — 「sale」「セール」「SALE」など表記ゆれをどう扱うか
    • タグの命名規則 — 新しいタグを追加するとき、既存の命名規則に合っているかの確認

    よくあるトラブルと対処

    タグが大量に消えてしまった

    インポート後に「タグが消えた」と気づいた場合、直前のCSVエクスポートファイルがあれば復元できます。そのファイルをそのまま再インポートすれば、元のタグ一覧に戻ります。エクスポートファイルを上書き保存していないことが前提です。

    スプレッドシートでタグが別の列に散らばった

    これはCSVのカンマ区切りとタグのカンマ区切りが同じ記号だから起きます。対策は次のとおりです。

    • スプレッドシートのインポート設定で「区切り文字の自動検出」をオフにし、手動でカンマを指定する
    • Excelの場合は「データ」→「テキストから」でカンマ区切りを指定する
    • Googleスプレッドシートなら、インポート時に「区切り文字の種類」をカンマに設定する

    タグにカンマを含めたい

    Shopifyの仕様上、タグ名にカンマを含めることはできません。カンマは常にタグの区切りとして解釈されます。「1,000円以上」というタグを使いたい場合は、「1000円以上」のようにカンマを使わない表記に変更する必要があります。


    タグ編集前のチェックリスト

    確認項目 確認方法
    変更前のTags列を保存したか エクスポート直後のCSVを別名保存
    追加したいタグを既存タグに追記したか Tags列に「既存 + 追加」の形式で書いたか確認
    Tags列に空セルがないか フィルタで空白行を確認
    重複タグがないか 関数またはスクリプトで重複検出
    カンマの前後に余計なスペースがないか 正規表現で前後空白を検索
    変更前後でタグ数の差が意図通りか 差分比較ツールで増減を確認

    まとめ

    Shopifyの商品CSVでTags列を編集するときは、「上書き」という仕様を前提に手順を組むことが大事です。具体的には、変更前のTags列を保存しておき、それに追記・削除したうえで差分を確認してからインポートするという流れを徹底すれば、意図せずタグを消す事故を防げます。自動チェックで形式の問題をふるいにかけ、ビジネス判断は人が行うという分担も取り入れると、ミスが減り作業も速くなります。

    タグの一括編集で困ったことがあれば、以下の情報をご用意のうえでお気軽にご相談ください。

    • 現在のタグ一覧(CSVエクスポートしたTags列で構いません)
    • 追加・削除したいタグのリスト
    • 対象商品のおおよその件数
    • 使用しているスプレッドシートの種類(Excel / Googleスプレッドシート / その他)
    • タグの命名規則があればそのルール

    機密CSVやスクリーンショットの送付は不要です。タグ列だけをコピーしたものでも対応可能です。

    参考にした公式情報

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

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

    無料診断を依頼する
  • Vendor列をブランド名として使う前に確認すること

    Vendor列をブランド名として使う前に確認すること

    Shopify商品CSVのVendor列は自由入力のテキスト欄で、ブランド名としても仕入先名としても使えます。しかし「とりあえず入れている」状態でフィードアプリを動かすと、Google Merchant Centerのbrand属性にそのまま渡り、表記揺れが不正確なブランドとして扱われることがあります。Vendor列をブランド名として使うなら、入力ルールを決めてから運用に入るのが確実です。


    Vendor列の役割と制約

    ShopifyのVendor列は、商品ごとにメーカーやブランド、仕入先を記録するためのフリーテキスト欄です。Shopify側では主に次の用途で使われます。

    • 管理画面のフィルターで「ベンダー別」に商品を絞り込む
    • コレクションの条件で「Product vendor is equal to …」を指定する
    • CSVでの一括整理・集計

    Shopify側には表記の正規化や重複の警告機能はありません。「BrandX」と「brandx」と「Brand X」はすべて別のベンダーとして扱われます。入力した文字列がそのままフィルターやコレクション条件の判定に使われる仕組みです。


    フィードアプリがVendorをbrandにマッピングする仕組み

    Google & YouTubeチャネル、Simprosys、FeedArmyなどのフィードアプリは、多くの場合デフォルトでShopifyのVendor列をMerchant Centerのbrand属性にマッピングします。このマッピングは便利ですが、Vendorの中身が整理されていないと次のような問題が起きます。

    現象 原因 Merchant Centerでの影響
    brand属性が空で送られる Vendor列が未入力の商品がある ブランド必須カテゴリで不承認
    同一ブランドが複数に分裂する 「BrandX」「brandx」「Brand X」が混在 検索フィルタで品牌が分散、レポート精度が下がる
    仕入先名がbrandとして表示される Vendorに仕入先会社名を入れている Google広告に仕入先名が表示される
    フィード補正ルールが効かない 表記が不定でルールの対象から漏れる brandの上書きが部分的にしか適用されない

    brand属性はGoogleの一部カテゴリ(アパレル、靴、時計など)で必須扱いです。空のままだと商品が不承認になるため、Vendorをブランド名として使うかどうかにかかわらず、何かしらの値を入れておく必要があります。


    Vendor列の使い方パターンと影響

    運用現場でよく見かけるVendor列の使い方をパターン別に整理しました。それぞれフィードへの影響が異なります。

    パターン 具体例 フィードへの影響 向いているケース
    ブランド名として統一 Vendor = “Sony” brand属性にそのまま使える。表記統一が前提 自社ブランド品や正規代理店品が中心
    仕入先名として統一 Vendor = “東京商事株式会社” brandに会社名が入り、Google広告に表示される 卸売り元の管理が主目的
    ブランド名と仕入先名の混在 商品AはVendor = “BrandX”、商品BはVendor = “大阪問屋” brand属性の意味が統一されず、レポートが読みづらい 運用ルール未定義のまま使っている状態
    空欄 Vendor = “” brand属性が空で送られ、必須カテゴリで不承認 該当なし(避けるべき)
    独自メタフィールドでbrand管理 Vendor = “BrandX”、brand用メタフィールド = “Brand X(正式表記)” フィードアプリのマッピング先をメタフィールドに変更可能 Vendorを内部分類用に使いたい場合

    いずれのパターンでも「決めて守る」ことが重要です。一部の商品だけルールが違うと、後からの修正コストが大きくなります。


    表記揺れが生む具体的な問題

    Vendor列の表記揺れは、ShopifyのフィルターとMerchant Centerの両方で問題を起こします。よくある例を見てみましょう。

    大文字・小文字・スペースの違い

    "BrandX"     ← 半角英数、スペースなし
    "Brand X"    ← スペースあり
    "brandx"     ← すべて小文字
    "BRANDX"     ← すべて大文字
    "Brandx"     ← 先頭のみ大文字

    この5つは人間にとっては同じブランドですが、ShopifyもGoogleも別の文字列として扱います。コレクションの条件で「Product vendor is equal to BrandX」と指定しても「Brand X」の商品は含まれません。

    全角・半角の混在

    "BrandX"   ← 全角英数
    "BrandX"          ← 半角英数

    日本の運用では全角・半角の混在も頻発します。CSVをExcelで開いたときに自動変換されるケースもあるため、取り込み後のチェックが必要です。

    略称と正式名称の混在

    "BrandX"           ← 略称
    "BrandX Inc."      ← 法人格つき
    "BrandX株式会社"    ← 日本語表記

    仕入先名をベンダーに入れている場合、略称と正式名称が混ざりやすい傾向があります。どちらを使うかを決めておかないと、Merchant Center側で別ブランドとして扱われます。


    Vendorが空欄のとき何が起きるか

    Vendor列が空欄の商品がある場合、フィードアプリの動作は次のいずれかになります。

    1. brand属性を空のまま送る → Merchant Centerで不承認または警告
    2. フィードアプリのフォールバック設定により、デフォルト値(店舗名など)を代入する
    3. 該当商品をフィードから除外する

    Google & YouTubeチャネルのデフォルト動作では、Vendorが空の場合にbrandが空欄で送られます。アパレルや靴のカテゴリに該当する商品は不承認になります。食品や雑貨などbrandが任意のカテゴリであれば警告止まりですが、広告の表示品質には影響します。

    空欄を防ぐには、CSVインポート時にVendor列を必ず埋める運用ルールを決めるか、フィードアプリ側でデフォルト値を設定するかのいずれかが必要です。


    Vendorを使うか、メタフィールドを使うか

    「Vendor列はShopifyの内部分類に使い、brandは別のメタフィールドで管理したい」というケースもあります。たとえば次のような状況です。

    • Vendorを仕入先コードとして使い、Google向けには正式ブランド名を送りたい
    • 複数の仕入先が同一ブランドを扱っており、Vendorで仕入先を管理したい
    • コレクションの絞り込み条件にVendorを使っており、表記を変えたくない

    この場合は、Shopifyのメタフィールド(例:custom.brand)を作成し、フィードアプリのマッピング設定でbrand属性のソースをメタフィールドに切り替えます。Vendor列は引き続き内部分類として使えます。

    ただし、メタフィールドの追加運用はCSVの行数や管理の手間が増えるため、商品点数が少ないうちはVendor列をブランド名として統一するほうがシンプルです。


    自動で検出できる問題と、人の判断が必要なこと

    Vendor列の整理では、機械的に洗い出せる問題と、運用判断が必要な問題を分けて考えると効率的です。

    自動で検出・修正できること

    • Vendor列の空欄検出(brand未設定商品の洗い出し)
    • 大文字・小文字の正規化(”brandx” → “BrandX”)
    • 全角→半角の統一(”BrandX” → “BrandX”)
    • 前後の空白文字の除去(” BrandX ” → “BrandX”)
    • 正規化後の重複検出(見た目は同じだが文字列が異なるベンダーの抽出)

    これらはスプレッドシートの関数やPythonスクリプトで一括処理できます。CSVエクスポート後に正規化スクリプトを通してからShopifyにインポートし直す方法が現実的です。

    人の判断が必要なこと

    • Vendor列にブランド名を入れるか、仕入先名を入れるかの運用ルールの決定
    • 略称と正式名称のどちらを標準表記にするか(例:”BrandX” か “BrandX Inc.” か)
    • メタフィールドを追加してbrandを分離管理するかどうかの判断
    • 既存商品のVendorを変更したときのコレクション・フィルターへの影響確認
    • 過去の広告レポートとの整合性を取るかどうかの判断

    正規化の結果を見て「この表記に統一する」と決めるのは人間の仕事です。特に既に運用中のストアでは、Vendorの変更がコレクション条件や既存のフィード補正ルールに影響する可能性があるため、変更範囲を確認してから反映することが大切です。


    Vendor列を整理する手順

    Step 1:現状のCSVをエクスポートして確認する

    Shopify管理画面から [設定] → [商品] → [エクスポート] でCSVをダウンロードし、Vendor列を確認します。ユニークな値を抽出して、現在いくつの表記が存在するかを把握します。

    Step 2:正規化して重複を洗い出す

    大文字・小文字、全角・半角、前後空白を統一したうえで、同一ブランドの異表記を抽出します。スプレッドシートで=UPPER(TRIM(SUBSTITUTE(A2," ","")))のような正規化式を使うか、スクリプトで一括処理します。

    Step 3:標準表記を決める

    洗い出した結果をもとに、各ブランドの正式表記を1つずつ決めます。公式サイトでの表記、パッケージ上の表記、すでにMerchant Centerに登録されている表記のいずれかに合わせるのが無難です。

    Step 4:CSVを修正してインポートする

    標準表記に統一したCSVを作成し、Shopifyにインポートします。インポート後はフィードアプリを再同期し、Merchant Center側のbrand属性が更新されているかを確認します。

    Step 5:今後の入力ルールを文書化する

    商品登録時のVendor入力ルールを決め、関係者に共有します。「ブランド名は公式表記に統一」「全角英数は使わない」「空欄は不可」の3つを最低限決めておけば、再散乱を防げます。


    Vendor列の運用チェックリスト

    Vendor列を整理する際の確認項目をまとめました。

    確認項目 確認方法 自動 / 目視
    Vendor列が空欄の商品がないか CSVのVendor列で空白セルを検索 自動判定可
    大文字・小文字の表記揺れ 大文字統一後のユニーク数と比較 自動判定可
    全角・半角の混在 正規化前後のユニーク数を比較 自動判定可
    前後の空白文字 TRIM処理前後で差分を確認 自動判定可
    ブランド名か仕入先名かが統一されているか Vendorの内容を目視で分類 目視
    標準表記がMerchant Centerと一致しているか MC管理画面のbrand属性と突合 目視
    コレクション条件にVendorを使っているか Shopify管理画面でコレクション条件を確認 目視
    フィードアプリのbrandマッピング元がVendorか アプリ管理画面のフィードマッピング設定 目視

    上4つはCSVデータの加工で機械的に検出できます。下4つは管理画面を開いて確認する必要があります。まずは自動判定でデータの現状を把握してから、目視確認に進む手順が効率的です。


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

    • 現在のVendor列に含まれるユニーク値のリスト(CSVエクスポート後の抽出で可)
    • Vendorをブランド名として使っているか、仕入先名として使っているかの現在の運用
    • 使用しているフィードアプリの名称(Google & YouTubeチャネル、Simprosys、FeedArmyなど)
    • Merchant Centerでbrand属性が空欄または警告になっている商品の有無
    • Vendor列の値を変更した際に影響しそうなコレクション条件の有無

    初回相談では機密CSVやスクリーンショットの送付は不要です。上記の情報がテキストで分かれば、まずは現状の整理から始められます。

    参考にした公式情報

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

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

    無料診断を依頼する