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 |
タグ整理前のバックアップ |
命名に含めるべき要素
- 日付 ― いつのバックアップか一目で分かる
- before ― 更新「前」であることが明確になる
- 目的ラベル ― 何の作業のためのバックアップか分かる
チームで共有フォルダに保存する場合、これらの要素が揃っていれば、数週間後でも「あの価格修正の前のデータ、どれだっけ?」と探す手間が省けます。
更新前に保存するもの
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
差分確認ワークフロー
バックアップを取っただけでは不十分です。インポートする前に「変更前」と「変更後」の差分を確認し、意図した列だけが書き換わっているか検証します。
手順
- Shopify管理画面から「商品をエクスポート」し、
_before付きで保存 - このCSVをコピーして編集用ファイルを作成
- 編集が終わったら、
_after付きで保存 - diffツールで
_beforeと_afterを比較 - 差分が想定範囲内か確認(列数、行数、変更箇所)
- 問題なければ
_afterファイルをインポート
diff確認のポイント
| 確認項目 | 期待される結果 | NG例 |
|---|---|---|
| 行数の変化 | 商品追加時のみ増加、それ以外は同じ | 商品削除の意図がないのに数百行減っている |
| 変更列 | 対象列だけが変わっている | 価格修正のはずが説明文も変わっている |
| Handle列 | 既存商品のHandleは一切変わっていない | Handleが書き換わって新規商品として二重登録 |
| 文字化け | 日本語が正常に表示される | 「???」や「�」が混入している |
復旧手順:バックアップCSVをインポートし直す
万が一、インポート後のデータに問題があった場合の復旧手順です。
- 共有フォルダから
_beforeバックアップCSVを見つける - ファイルを開いて文字化けがないか確認(UTF-8であること)
- Shopify管理画面の「商品をインポート」から
_beforeCSVをアップロード - 「既存の商品を上書きする」オプションが有効であることを確認
- インポート完了後、管理画面で数件の商品を開いて値が戻っているか目視確認
注意点: バックアップ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 / 一括編集 まわりの作業整理、小さな自動化、簡易チェックツール化について相談できます。初回相談で機密CSVやスクリーンショットを送る必要はありません。
無料相談する
