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

無料診断を依頼する