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やスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • 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やスクリーンショットを送る必要はありません。

    無料診断を依頼する
  • Variant Barcodeを入れる前に確認したいJANコードの持ち方

    Variant Barcodeを入れる前に確認したいJANコードの持ち方

    Variant Barcode列にJANコードを入力する前に確認すべきは、「そのJANは親商品につくものか、それとも色・サイズ別のvariantごとに割り当てられたものか」です。親商品のJANをvariant行に転記してしまうと、在庫連携やPOS連携で意図しない挙動になります。本記事では、JANコードの持ち方を整理し、CSV入力時の落とし穴を自動チェックと人間の判断に分けて解説します。


    Variant Barcodeとは何を入れる列か

    Shopify商品CSVのVariant Barcode列には、そのvariant(色・サイズなどの組み合わせ)に対応するバーコード番号を入力します。多くの場合、日本ではJANコード(GTIN-13またはGTIN-8)が該当します。

    重要なのは、この列が「親商品(Product)」単位ではなく「variant(Variant)」単位であることです。たとえばTシャツ商品で「赤・S」「赤・M」「青・S」の3variantがある場合、それぞれに異なるJANコードが割り当てられていれば、3つのvariant行にそれぞれ別のJANを入力します。

    親商品JANとvariant JANの違い

    項目 親商品JAN variant JAN
    割り当て単位 商品全体(色・サイズ問わず) 色・サイズの組み合わせごと
    CSVでの入力場所 1行目(Handleの先頭行)のVariant Barcode 各variant行のVariant Barcode
    POSでの用途 商品検索のヒント程度 スキャン時に特定variantを確定
    在庫管理との関係 直接連動しない 特定variantの在庫と紐づく

    自社でJANを付与している場合は、規格別にJANを発行しているか、それとも商品全体で1つのJANにしているかを、まず商品マスタで確認してください。


    典型的な3パターン ― あなたのショップはどれ?

    パターンA:variantごとに個別JANがある

    アパレルや雑貨でよくあるケースです。色・サイズごとにJANが発行されており、variant行ごとに異なる13桁(または8桁)のコードが入力されます。このパターンでは、各variant行のVariant Barcode列にそのままJANを入力します。

    パターンB:親商品JANのみ、variantにはJANがない

    食品や日用品で多いケースです。商品全体で1つのJANが付いており、色やサイズのバリエーションがあってもJANは共通です。この場合、先頭行(最初のvariant行)にJANを入力し、残りのvariant行は空欄にするか、同じJANを入力します。ただし、同じJANを複数variantに入れると、POSスキャン時にどのvariantが選ばれるかは環境に依存する点に注意が必要です。

    パターンC:JANコードを一切持っていない

    オリジナル商品やハンドメイド品などで、JAN未登録のケースです。Variant Barcode列は空欄で問題ありません。空欄でもShopify上の商品表示や販売には影響しませんが、POSレジでのバーコードスキャン検索はできなくなります。


    Excelで起こりやすい2つのトラブル

    CSVをExcelで開いてJANコードを編集すると、以下の問題が頻発します。どちらも「データの見た目は合っているが、実際の値が壊れている」ため、アップロード後に不具合として発覚します。

    先頭ゼロが消える

    JANコードの先頭が「0」の場合(たとえば 0454991111111)、Excelはこれを数値として扱い、先頭のゼロを削除して12桁にしてしまいます。対策は以下のいずれかです。

    • CSVをテキストエディタで開いて確認する
    • Excelの「データ」タブから「テキストとして読み込む」で列の書式を「文字列」に指定する
    • 入力前にセルの書式を「文字列」に変更する

    指数表記(E表記)になる

    13桁の数字はExcelで 4.54991E+12 のように指数表記に変換されることがあります。見た目だけでなく、保存時の実際の値も丸められているため、そのままアップロードすると「無効なバーコード」エラーになります。

    この問題も、CSVをExcelで開かずにテキストエディタで確認することで確実に防げます。


    SKU・Barcode・JANの役割まとめ

    CSV入力時に混同しやすい3つの識別子を整理します。

    識別子 CSV列名 役割 重複可否 必須か
    SKU Variant SKU 社内在庫管理コード ショップ内で一意推奨 任意
    Barcode Variant Barcode POSスキャン用バーコード番号 GTIN体系内で一意 任意
    JAN(GTIN-13) Variant Barcodeに入力 日本の流通用商品識別番号 全局で一意 任意

    SKUは社内の都合で自由に付与できるコードで、JANは(一財)流通コードセンターが管理する全球規格です。「SKUにJANを入れている」という運用は技術的には可能ですが、役割が異なるため、列は分けて管理することをおすすめします。


    JANコードの桁数チェック ― 自動で確認できる部分

    JANコードにはGTIN-13(13桁)とGTIN-8(8桁)の2種類があります。CSVに入力する前に、以下のチェックを自動化できます。

    チェック手順

    1. 文字列長が13または8であることを確認する
    2. すべての文字が数字であることを確認する
    3. チェックデジット(最後の1桁)が正しいことを確認する

    チェックデジットの計算方法(GTIN-13の場合)

    12桁の数字について、以下の計算を行い、結果が最後の1桁と一致すれば有効です。

    1. 左から奇数桁(1、3、5…桁目)を合計する
    2. 左から偶数桁(2、4、6…桁目)を合計し、3倍する
    3. 1と2を足す
    4. 10から3の1の位を引く(0の場合は10に)
    5. 結果が13桁目と一致すれば有効

    この計算はスプレッドシートの数式や簡単なスクリプトで自動化できます。CSV入力前に一括検証しておくと、アップロード後のエラーを減らせます。


    自動チェックと人間の判断の切り分け

    確認項目 自動チェック可能 人間の判断が必要
    桁数が13または8か
    数値のみか(空白・記号がないか)
    チェックデジットが正しいか
    先頭ゼロが欠落していないか
    variantごとのJANが正しい割り当てか ○(商品マスタと照合)
    親商品JANをvariantに入れていないか △(重複検知は可能) ○(意図の確認)
    SKUとBarcodeを混同していないか ○(運用ルールの確認)
    Barcode列を空欄にするか共通JANを入れるか ○(ビジネス判断)

    自動チェックはスプレッドシートやスクリプトで一括実行できます。「このJANは本当にこのvariantに対応しているか」の確認は、商品マスタ(またはJAN発行元の台帳)と見比べる必要があるため、担当者の目視確認が基本になります。


    Variant Barcodeが空欄のときどうなるか

    Variant Barcodeを空欄のままにしても、Shopifyストアフロントでの商品表示や購入には影響しません。空欄になるケースと、その影響を整理します。

    • POSレジでのスキャン不可:バーコードがないため、物理スキャナーで商品を特定できません。POS運用がある場合は必須です。
    • Google Merchant Centerの警告:Google Shoppingフィードで gtin が欠落していると警告が出ることがあります(gtinはBarcodeから取得されます)。
    • 在庫連携での不一致:外部倉庫やERPとJANベースで連携している場合、Barcode空欄のvariantはマッチングされません。

    「当面は空欄で問題ないが、将来のPOS導入や外部連携に備えておきたい」という場合は、一旦空欄でアップロードし、後からCSVで一括追記する運用も可能です。


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

    • 商品マスタのJANコード割り当てルール(variantごと or 親商品ごと)
    • 現在の商品CSV(Variant Barcode列の状態がわかるもの)
    • POSまたは外部システム連携の有無
    • 使用しているスプレッドシート編集ツール(Excel / Googleスプレッドシート / その他)
    • JANコードの発行元(自社発行 / メーカー付与 / GS1 Japan)
    • 特に困っている症状(桁数エラー / 先頭ゼロ消失 / スキャン不可など)

    初回相談では機密CSVやスクリーンショットの送付は不要です。まずは現在の運用方法と課題を言葉で共有していただければ、具体的な確認手順をご案内できます。

    参考にした公式情報

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

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

    無料診断を依頼する
  • Image SrcとVariant Imageを混同すると商品画像がどうずれるか

    Image SrcとVariant Imageを混同すると商品画像がどうずれるか

    Shopifyの商品CSVで画像がずれる原因の大部分は、Image Src列Variant Image列の役割を混同することにあります。Image Srcは「商品に属する画像の一覧」を定義し、Variant Imageは「その画像のうちどれをどのバリエーションに割り当てるか」を指定します。この2つの関係を正しく理解すれば、CSV一括登録での画像ずれを防げます。

    Image SrcとVariant Imageは何が違うのか

    Shopifyの商品CSVには画像に関連する列が複数あります。よく混同される2つの列を整理します。

    Image Src(商品レベルの画像URL)

    Image Srcは、商品に紐づく画像ファイルのURLを記述する列です。1つの商品に5枚の画像を登録する場合、同じHandleの5つの行にそれぞれ異なるURLを書きます。Image Srcで指定された画像は商品ページのギャラリーに表示されます。

    • 画像のURL(https://cdn.shopify.com/... など)をそのまま記述
    • Image Position列で表示順を制御(1, 2, 3…)
    • Image Alt Text列で代替テキストを設定
    • 商品全体の画像リストを構成する

    Variant Image(バリエーションに割り当てる画像URL)

    Variant Imageは、特定のバリエーション(色違いやサイズ違い)に「どの画像を表示するか」を指定する列です。ここに書くURLは、必ずいずれかのImage Srcと一致している必要があります。

    • バリエーション行に記述する画像URL
    • 記述したURLは商品画像ギャラリーのどこかの画像と一致する必要がある
    • 空欄の場合、variant画像が未指定になり、テーマや商品ページ、連携先によっては代表画像が表示されることがあります
    • バリエーション選択時にハイライトされる画像を決定する

    4つの画像関連列の比較表

    列名 対象レベル 役割 必須
    Image Src 商品 商品に属する画像のURL 画像を登録するなら必須
    Image Position 商品 画像の表示順(1, 2, 3…) 推奨
    Image Alt Text 商品 画像の代替テキスト 任意(アクセシビリティ上推奨)
    Variant Image バリエーション バリエーションに割り当てる画像URL 任意(空欄ならvariant画像未指定)

    CSVの複数行構造と画像の関係

    Shopify商品CSVは1商品につき複数行で構成されます。1行目が商品本体、2行目以降がバリエーションです。画像行も同じ構造の中に含まれます。

    正しい行構造の例

    Tシャツ(赤・青の2色)に画像3枚を登録する場合を考えます。赤の画像、青の画像、ロゴ画像の3枚です。

    Handle,Title,Variant 1,Image Src,Image Position,Variant Image
    tshirt,Tシャツ,赤,https://cdn.shopify.com/red.jpg,1,https://cdn.shopify.com/red.jpg
    tshirt,,青,https://cdn.shopify.com/blue.jpg,2,https://cdn.shopify.com/blue.jpg
    tshirt,,,https://cdn.shopify.com/logo.jpg,3,
    

    3行目はバリエーションではなく画像の追加行です。Variantの列(Variant 1など)が空で、Image Srcだけが埋まっている行は「この商品にもう1枚画像を追加する」という意味になります。

    混同で起きる典型的な画像ずれパターン

    パターン1:Variant Imageを空欄にしたままImage Srcだけ入力

    Variant Imageを空欄にすると、variant画像が未指定の状態になり、テーマや連携先の表示によっては代表画像が表示されることがあります。色違い商品でVariant Imageを書き忘れると、青のバリエーションを選んでも赤いTシャツの画像が表示されます。

    Handle,Title,Variant 1,Image Src,Variant Image
    tshirt,Tシャツ,赤,https://cdn.shopify.com/red.jpg,
    tshirt,,青,https://cdn.shopify.com/blue.jpg,
    

    この場合、赤も青もred.jpgが表示されます。正しくは青の行に https://cdn.shopify.com/blue.jpg をVariant Imageに記述します。

    パターン2:Image SrcとVariant Imageで違うURLを書く

    Variant Imageには「商品画像として登録済みのURL」を書く必要があります。Image SrcにないURLをVariant Imageに書くと、意図しない挙動になります。

    Handle,Title,Variant 1,Image Src,Variant Image
    tshirt,Tシャツ,赤,https://cdn.shopify.com/red.jpg,https://cdn.shopify.com/red.jpg
    tshirt,,青,https://cdn.shopify.com/blue.jpg,https://example.com/another-blue.jpg
    

    another-blue.jpgはImage Srcに存在しないため、正しく紐付かない可能性があります。Variant ImageのURLは必ずいずれかのImage Srcと完全一致させる必要があります。

    パターン3:Image SrcのURLを差し替えてVariant Imageを更新し忘れる

    画像を差し替える際、Image Src列のURLを新しいものに変更したのにVariant Image列を古いURLのままにしてしまうケースです。

    変更前 変更後(誤り)
    Image Src https://cdn.shopify.com/old-red.jpg https://cdn.shopify.com/new-red.jpg
    Variant Image https://cdn.shopify.com/old-red.jpg https://cdn.shopify.com/old-red.jpg(更新忘れ)

    結果としてVariant Imageが存在しないURLを指すことになり、バリエーション画像が表示されなくなります。

    正しいCSV入力のチェック手順

    CSVをアップロードする前に、以下の順序で確認します。

    1. Image Srcの重複確認 — 同じHandle内で同じURLが複数回出現していないか確認
    2. Image Positionの連番確認 — 1, 2, 3… と飛ばしなく連続しているか確認
    3. Variant ImageのURL照合 — Variant Imageの各URLが、同じHandle内のImage Srcのいずれかと完全一致するか確認
    4. 空欄の意図確認 — Variant Imageが空欄の行は、意図的に空欄にしたものか確認
    5. 拡張子の統一 — URLの大文字小文字、クエリパラメータまで含めて完全一致しているか確認

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

    画像ずれの確認には、機械的に検出できる部分と人間の目が必要な部分があります。

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

    チェック項目 方法
    Variant ImageのURLがImage Srcに存在するか URL文字列の完全一致検索
    Variant Imageが空欄のバリエーションがあるか 空欄セルの検出
    Image Positionの重複・欠落 数値の連番チェック
    Handleごとの画像枚数とPositionの整合 行数カウントと数値の照合
    URL形式の妥当性(httpsで始まるか) 正規表現マッチ

    これらはスプレッドシートの関数や簡易スクリプトで検出できます。たとえばGoogleスプレッドシートなら VLOOKUPCOUNTIF を使って、Variant Image列のURLがImage Src列に存在するか確認できます。

    人間の判断が必要な項目

    確認項目 理由
    画像の内容がバリエーション名と一致しているか 「赤」というバリエーションに赤い画像が割り当たっているかは目視が必要
    Alt Textが画像の内容を適切に説明しているか 文脈の理解が必要
    画像の画質・構図が商品ページに適しているか 審美的な判断
    画像の表示順(Position)がユーザーにとって自然か UX上の判断

    画像ずれが起きてしまった場合の復旧手順

    CSVアップロード後に画像がずれてしまった場合の手順です。

    1. 現状の確認 — Shopify管理画面で該当商品を開き、どのバリエーションにどの画像が割り当たっているか確認
    2. CSVの再エクスポート — 管理画面から「エクスポート」で現在のCSVをダウンロードし、実際のImage SrcとVariant Imageの状況を把握
    3. Variant Image列の修正 — ダウンロードしたCSVでVariant Image列を正しいURLに修正
    4. Image Srcとの整合確認 — 修正したVariant ImageのURLがImage Src列に存在することを確認
    5. 再インポート — 修正したCSVをアップロード(上書きインポート)
    6. 管理画面での最終確認 — 各バリエーションを選択し、意図した画像が表示されるか確認

    よくある質問

    Variant Imageを空欄にしておくとどうなりますか?

    空欄の場合、そのバリエーションの画像は未指定になります。テーマや商品ページ、連携先によっては代表画像が表示されることがありますが、すべてのバリエーションで同じ画像を表示したい場合にも、各Variant Image列に同じURLを明示的に記述することをおすすめします。

    画像URLはどこで確認できますか?

    すでに登録済みの商品なら、CSVをエクスポートしてImage Src列を確認するのが確実です。新規登録の場合は、画像を事前にShopifyのファイル管理(Settings > Files)にアップロードし、そのURLをImage Srcに記述します。

    同じ画像を複数バリエーションに割り当てられますか?

    はい、可能です。複数のバリエーション行のVariant Imageに同じURLを記述すれば、同じ画像が複数バリエーションに割り当たります。たとえばS・M・Lサイズで同じ画像を使う場合、3行とも同じURLを書きます。

    まとめ:画像ずれを防ぐ3つのポイント

    • Image Srcは商品の画像リスト、Variant Imageはバリエーションへの割り当て — 役割を明確に分けて理解する
    • Variant ImageのURLは必ずImage Srcのいずれかと完全一致させる — クエリパラメータや大文字小文字の違いにも注意
    • CSVアップロード前にURLの照合チェックを必ず行う — 自動チェックで機械的な誤りを検出し、目視で内容の整合を確認する

    機密CSVやスクリーンショットの送付は不要です。記事の内容について気になる点があれば、URLと具体的な疑問点をお知らせください。

    CSV入力でお困りの際は以下の情報をご用意のうえご相談ください。

    • 対象の商品CSVファイル(画像列の 部分)
    • ずれが発生している商品のHandle
    • 期待する画像とバリエーションの紐付け
    • 使用しているCSVエディタ(Excel / Googleスプレッドシート / その他)
    • 商品のバリエーション構成(色展開 / サイズ展開 / 両方)

    参考にした公式情報

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

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

    無料診断を依頼する
  • Shopify CSVのMetafield列を触る前に決めること

    Shopify CSVのMetafield列を触る前に決めること

    Shopifyの商品CSVでMetafield列を一括編集する前に、まず確認すべきことがあります。namespaceとkeyの対応データ型の一致、そして空欄が「値の削除」なのか「変更しない」なのかの違いです。これらを押さえずにCSVをアップロードすると、意図しないデータ消失や型エラーの原因になります。

    Metafield列の構造を知る

    Shopify商品CSVでは、Metafieldは列名(ヘッダー)で識別されます。列名のフォーマットは次のようになります。

    metafield.namespace.key

    たとえば custom.brand_name という列があれば、custom がnamespace、brand_name がkeyです。この構造によって、どのMetafield定義に値を書き込むかが決まります。

    namespaceとは

    namespaceはMetafieldをグループ化する識別子です。標準機能で作成したカスタム項目は custom というnamespaceに属することが多いです。アプリが独自に作成したMetafieldは、アプリごとに異なるnamespace(app.bundlermy_fields など)を使います。

    keyとは

    keyはnamespace内での項目名です。たとえば custom.warranty_months なら、warranty_months がkeyで、「保証月数」を表すMetafieldへの書き込みを意味します。

    データ型とCSV入力形式の対応表

    Metafieldには型(type)があり、CSVに入力する値もその型に合わせる必要があります。代表的な型とCSVでの入力例をまとめました。

    型(type) 意味 CSV入力例 注意点
    single_line_text_field 1行テキスト 夏季限定 改行を含めない
    multi_line_text_field 複数行テキスト 素材: 綿100%<br>产地: 日本 引用符で囲む
    number_integer 整数 12 小数を入れない
    number_decimal 小数 3.5 小数点はピリオド
    boolean 真偽値 true / false 空欄は不可
    url URL https://example.com http/httpsで始める
    color カラーコード #FF5500 16進数6桁
    date 日付 2026-06-01 ISO 8601形式
    product_reference 商品参照 gid://shopify/Product/12345 GraphQL IDが必要

    CSV上のMetafield列と管理画面の定義の違い

    ここを混同しやすいので整理します。

    • 管理画面のMetafield定義: 「設定 → カスタムデータ → 商品」で定義するnamespace、key、型のセット。これが存在しないと、CSVに列を追加しても値は保存されません。
    • CSVのMetafield列: ヘッダー行に metafield.namespace.key 形式で列を追加し、その下に値を書き込む仕組み。

    つまり、CSVでMetafieldを編集する前提として、管理画面側に同名の定義が存在する必要があります。定義がない状態でCSVに列を追加しても、Shopifyはその値をどこに保存してよいか分かりません。

    空欄の意味——削除か、変更なしか

    CSVのMetafield列を空欄にした場合、Shopifyの挙動は次のようになります。

    • 列自体が存在しない: そのMetafieldは変更されず、既存の値が保持されます。
    • 列が存在し、値が空欄: そのMetafieldの値が削除(クリア)されます。

    この違いは非常に重要です。「変更したくない項目」の列までCSVに含めて空欄にすると、意図せず値が消えることがあります。変更対象のMetafield列だけをCSVに含めるか、変更しない項目は現在の値をそのまま記載するか、方針を決めておきましょう。

    CSV編集前に確認すべきチェックリスト

    実際にCSVを開く前に、次の項目を確認します。

    確認項目 確認方法
    編集対象のnamespaceとkey 管理画面「設定 → カスタムデータ → 商品」で一覧確認
    各Metafieldの型 定義画面の「タイプ」欄
    現在の値 商品編集画面の下部「Metafield」セクション、または1件だけCSV書き出し
    空欄にする意図があるか 値のクリアが必要な商品と不要な商品を仕分け
    CSVに含めるMetafield列の範囲 変更しない項目の列を含めない方針にする
    バックアップの有無 編集前に現在のCSVを書き出して保存

    自動で確認できること vs 人間が判断すること

    CSV編集の品質を保つには、機械的にチェックできる部分と人間が判断する部分を分けておくと効率的です。

    自動チェックで確認できること

    • 列名が metafield.namespace.key の形式に従っているか
    • namespaceとkeyが管理画面の定義に存在するか
    • 値が定義された型と一致しているか(数値列に文字がないか、booleanが true/false かなど)
    • 必須項目が空欄になっていないか
    • 文字数上限を超えていないか

    これらはスプレッドシートのデータバリデーションや、スクリプトで事前に検証できます。

    人間が判断すべきこと

    • そのMetafield項目の本来の目的(たとえば「ブランド名」欄にカテゴリ名を入れていないか)
    • 空欄にしてよいか、それとも誤入力が疑われるか
    • 値の統一表記のルール(「有」「無」か「true」「false」か、「あり」「なし」か)
    • 複数担当者間で入力基準が揃っているか

    型ミスマッチが起きたときの挙動

    CSVで型と合わない値を入力した場合、Shopify側では次のような扱いになります。

    • 数値型に文字を入れた: インポート時にエラーとなり、その行のMetafield値は更新されません。
    • boolean型に true/false 以外を入れた: 同様にエラー扱いで更新がスキップされます。
    • URL型に不正な文字列を入れた: 一部は保存されるものの、管理画面で表示エラーになることがあります。

    エラーがあった行はインポート結果画面で確認できますが、一部だけ更新されて一部がスキップされる「部分成功」の状態になるため、事前の型確認が重要です。

    実務での進め方——3ステップ

    ステップ1: 現状を書き出して確認

    管理画面から商品CSVを書き出し、対象のMetafield列の現在値を確認します。このとき、列名の namespace.key が定義と一致しているかも併せて確認します。

    ステップ2: 編集方針を決める

    次の方針を決めます。

    1. 変更するMetafield列だけをCSVに残す(空欄による誤削除を防ぐ)
    2. 型のバリデーションルールをスプレッドシートに設定する
    3. サンプル5〜10行でテストインポートして挙動を確認する

    ステップ3: 本番CSVをインポート

    テストで問題なければ、全量のCSVをインポートします。インポート後、結果画面でエラーや警告がないか確認し、必要に応じて商品詳細画面も開いて値が反映されているか目視で確認します。


    まとめ

    Shopify商品CSVのMetafield列を編集する前に確認すべきポイントをまとめます。

    • 列名の metafield.namespace.key 形式を理解し、管理画面の定義と一致させる
    • データ型(single_line_text_field、number_integer、boolean など)に合った値を入力する
    • 空欄は「値の削除」を意味するため、変更しない項目の列はCSVに含めない
    • CSVのMetafield列は、管理画面に定義が存在することが前提
    • 自動チェック(形式・型)と人間の判断(目的・表記揺れ)を分けて品質を保つ

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

    Metafieldの一括編集について相談する際は、次の情報があると話が進めやすくなります。

    1. 編集したいMetafieldのnamespaceとkey(管理画面の定義名)
    2. 現在の値のサンプル(数件で構いません)
    3. 変更後の値のイメージ(表記ルールや単位など)
    4. 対象商品の件数
    5. 使用しているCSV編集ツール(Excel、Googleスプレッドシート、その他)

    機密CSVやスクリーンショットの送付は不要です。上記のテキスト情報だけで対応可能です。

    参考にした公式情報

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

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

    無料診断を依頼する
  • 商品説明HTMLをCSVで更新するときの崩れやすいポイント

    商品説明HTMLをCSVで更新するときの崩れやすいポイント

    Shopifyの商品CSVにあるBody HTML列をスプレッドシートで開くと、改行がずれて列が崩れたり、HTMLタグが書き換わったりするトラブルがよく起こります。この記事では、どうして崩れるのか、どう防げばよいかを具体例つきで整理しました。

    結論から言うと、Body HTML列をExcelやGoogleスプレッドシートで直接編集するのは避け、テキストエディタや専用ツールを使うのが一番安全です。それでもスプレッドシートを使いたい場合は、CSVではなくTSV形式で扱うか、インポート時に「テキストとして」読み込むことで大部分の崩れを防げます。

    本記事の対象読者は、商品説明を一括で更新する担当者です。CSVの基本操作には触れますが、HTMLの基礎知識があることを前提としています。


    Body HTML列の正体

    Shopifyの商品CSVにはBody HTMLという列があり、ここに商品説明ページのHTMLがそのまま入っています。具体的には次のようなタグが含まれます。

    • <p> … 段落
    • <strong> … 太字
    • <ul> / <li> … 箇条書き
    • <a href="..."> … リンク
    • <img src="..."> … 画像埋め込み
    • <br /> … 改行

    つまりBody HTML列の中身は生のHTMLコードであり、CSVの1セルに複数行のタグが詰め込まれています。これがトラブルの根本原因です。

    CSV上ではどう見えるか

    テキストエディタでCSVを開くと、Body HTML列の中身はダブルクォートで囲まれて1行に収まっています。

    "Handle","Title","Body HTML",...
    "my-product","商品名","<p>説明文</p><ul><li>項目1</li><li>項目2</li></ul>",...

    このように、改行を含まない1行の文字列として保存されていれば正常です。しかしスプレッドシートで開いた瞬間に、この構造が壊れ始めます。


    Excelで開いたときに起きる3つの崩れ

    1. 改行による行ズレ

    Body HTML内に <br /></p> の前後に改行文字が含まれていると、Excelはそれをセルの区切りではなく行の区切りとして解釈します。結果として、1つの商品のデータが複数行に分断され、列がずれてしまいます。

    特に他のシステムからエクスポートしたCSVや、手作業で改行を入れたCSVで顕著に発生します。

    2. HTMLタグの自動変換

    Excelはセル内のテキストを自動判定するため、HTMLタグやエンティティを意図せず変換することがあります。

    元の文字列 Excelでの変換結果 影響
    &amp; & 再保存時に & だけになり、HTMLとして不正になる
    &lt; < タグのエスケープが外れて表示崩れ
    &gt; > 同上
    &quot; " CSVの区切り文字と衝突して列崩れ
    <br /> 実際の改行 行が分断される

    この変換はセルの表示上だけの問題ではなく、CSVとして再保存した時点で元に戻らないことがあります。

    3. リンクタグの切断

    <a href="https://example.com">リンクテキスト</a> のようなタグは、URL内の特殊文字や改行の影響で簡単に壊れます。具体的には次のようなパターンがあります。

    • URLが途中で改行され、<a href="https://example.com"> に分断される
    • クォート (") がExcelのCSV区切りと誤認され、タグ構造が壊れる
    • 埋め込み画像の src URLが同様に切断される

    リンクが壊れた状態でインポートすると、商品ページ上でクリックできないリンクや、画像のリンク切れが発生します。


    崩れパターン一覧表

    よくある崩れとその原因をまとめました。更新前にこの表を確認しておくと、事故を減らせます。

    症状 原因 発生しやすい状況
    商品データが複数行に分かれる HTML内の改行が行区切りとして扱われた Excelで直接開いたとき
    & だけが残る &amp; が自動変換された 再保存時
    リンクがクリックできない <a> タグが切断された URLが長い、または改行を含む
    画像が表示されない <img src> のURLが壊れた CDATAセクションや改行の影響
    レイアウトが崩れた 閉じタグ (</ul> 等) が欠落した 手動編集時の誤削除
    CSVインポートでエラー 列数が合わない 行ズレの結果、全体的に列がずれた
    日本語が文字化け 文字コードの不一致 (UTF-8 vs Shift-JIS) Excelのデフォルト設定

    安全な編集ワークフロー

    崩れを防ぐための推奨手順を説明します。ここではExcelを使わない方法と、どうしてもExcelを使いたい場合の方法の両方を紹介します。

    方法A:テキストエディタで直接編集(推奨)

    1. Shopify管理画面からCSVをエクスポート(管理画面 → 商品 → エクスポート)
    2. VS Codeやサクラエディタなどのテキストエディタで開く
      • UTF-8エンコーディングで開くことを確認
      • カンマ区切りのハイライトがあれば有効にする
    3. Body HTML列の該当箇所を検索して編集
      • 検索機能で Handle 値を探し、同じ行のBody HTML列を書き換える
      • 改行は n ではなく <br /> で表現する
      • タグの対応(開始タグと閉じタグ)を崩さない
    4. CSVの構造が壊れていないか確認
      • 各行のカンマ数がヘッダー行と同じか確認
      • ダブルクォートのペアが正しく閉じているか確認
    5. Shopify管理画面からインポート

    テキストエディタを使えば、Excelによる自動変換が一切起きないため、最も安全です。

    方法B:スプレッドシートを使う場合

    やむを得ずExcelやGoogleスプレッドシートを使う場合は、次の手順で崩れを最小限に抑えます。

    1. CSVではなくTSV形式で扱う
      • Googleスプレッドシートにインポートする際、「テキストとして貼り付け」を選ぶ
      • Excelの場合は「データ」→「テキストから」でインポートし、各列を「テキスト」として指定する
    2. Body HTML列を一切編集しない
      • 商品名や価格など、HTMLを含まない列だけをスプレッドシートで編集する
      • Body HTML列の編集はテキストエディタに戻って行う
    3. エクスポート時にCSV形式を選ぶ
      • スプレッドシートから「CSVとしてダウンロード」する
      • 文字コードがUTF-8であることを確認する

    チェックリスト:インポート前の確認項目

    # 確認項目 方法
    1 行数がエクスポート時と同じか テキストエディタで行数カウント
    2 各列のカンマ数がヘッダー行と一致するか テキストエディタで確認
    3 文字コードがUTF-8 (BOMなし) か テキストエディタのステータスバー
    4 Body HTML内に未エスケープの " がないか 検索で確認
    5 リンクのURLが途中で切れていないか href= を検索して目視確認
    6 画像の src URLが有効か src= を検索して確認
    7 閉じタグが欠落していないか タグの開閉ペアを数える

    自動で検出できる問題と人間の目で確認すべき問題

    HTMLの崩れには、ツールで自動検出できるものと、人間の判断が必要なものがあります。両方を組み合わせることで、見落としを大幅に減らせます。

    自動チェックで対応できること

    次の項目はスクリプトやオンラインツールで機械的に検出できます。

    • 閉じタグの有無:HTMLバリデータや正規表現で <ul> に対する </ul> などの存在を確認
    • HTMLエンティティの不正なデコード&&amp; として正しくエスケープされているか
    • URLの形式href=src= の値が https:// で始まる有効なURLか
    • CSVの構造整合性:各行の列数がヘッダー行と一致するか
    • 文字コードの確認:UTF-8であることの検証

    これらは簡易スクリプト(PythonやPHP)で数百行も書かずにチェックできます。CSV更新を定期的に行うなら、専用のバリデーションスクリプトを用意しておくと安心です。

    人間の目で確認すべきこと

    一方で、次の項目は自動判定が難しく、実際の商品ページを見て確認する必要があります。

    • レイアウトの見え方:タグは正しくても、意図した見た目になっているかはブラウザで確認が必要
    • 画像の適切さ:画像URLは有効でも、正しい画像が表示されているかは人が判断する
    • リンクの遷移先:URLが正しくても、リンク先のページが意図したものかは確認が必要
    • 文章の自然さ:HTML構造は問題なくても、日本語として不自然な部分がないか
    • モバイルでの表示:PCでは問題なくても、モバイルで崩れていないか

    自動チェックをパスしたCSVをインポートした後、最低でも3〜5商品をサンプリングして実際のページを開き、PCとモバイル両方で表示を確認することをおすすめします。


    よくある質問

    Googleスプレッドシートなら安全ですか?

    いいえ、Googleスプレッドシートでも同様の崩れが起きます。スプレッドシートはセル内の改行を許容しますが、CSVとしてエクスポートする際に改行の扱いが変わるため、Excelと同じ問題が発生します。Body HTML列の編集はテキストエディタで行うのが確実です。

    すでにExcelで開いて崩れてしまったCSVはどうすればいい?

    崩れたCSVからの復元は難しいため、元のCSVを再度エクスポートし直すのが最も早いです。バックアップを取っていなければ、Shopify管理画面から再エクスポートしてください。その上でテキストエディタを使って編集し直します。

    Body HTMLを丸ごと差し替えても大丈夫ですか?

    構造上は可能ですが、既存の画像URLやリンクを失うリスクがあります。差し替え前に、現在のBody HTMLをバックアップとして別ファイルに保存しておくことを推奨します。


    まとめ

    Shopify商品CSVのBody HTML列を編集する際は、次の3点を押さえておけば大きなトラブルを防げます。

    1. スプレッドシートで直接開かない — 改行やHTMLエンティティの自動変換が原因で崩れる
    2. テキストエディタで編集する — UTF-8対応のエディタを使えば、HTML構造をそのまま維持できる
    3. インポート後にサンプリング確認する — 自動チェック+目視確認の組み合わせで見落としを防ぐ

    商品数が多い場合は、編集前に少数商品でテストインポートを行い、問題がないことを確認してから本番に反映すると安心です。


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

    商品CSVの更新でつまずいた際、次の情報があるとスムーズに状況を把握できます。

    • 崩れが出ている商品のHandle
    • どの部分が崩れているかの説明(レイアウト、文字化け、リンク切れなど)
    • 使用したエディタ
    • インポート時のエラーメッセージ(もしあれば)
    • Body HTML列の一部を伏せ字にした例(特定できない範囲で構いません)

    初回相談では機密CSVやスクリーンショットの送付は不要です。商品名やHandleなど、テキストで伝えられる情報でご相談いただけます。必要になった場合に後からスクリーンショットを確認することがあります。

    参考にした公式情報

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

    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やスクリーンショットを送る必要はありません。

    無料診断を依頼する