なぜCSV一括更新の事故は「間違えた列」より「触っていない列」で起きるのか
CSV一括更新は、価格・在庫数・商品説明・カテゴリなど複数の項目を一つのファイルにまとめてアップロードし、モール側のシステムに一括で反映させる仕組みです。数百件の商品ページを数分で書き換えられる一方で、ファイルの中身が間違っていれば、その間違いも同じ数百件に広がります。
ここで見落とされやすいのが、「更新するつもりだった列」の間違いよりも、「触るつもりがなかった列」が空欄のまま上書きされてしまう事故です。編集対象は価格だけのつもりでも、ファイル自体には商品説明やカテゴリなど他の列も含まれています。作業中にどこかのセルが誤って空になっていると、モール側はそれを未入力として受け取り、公開中のページから説明文が消えてしまうことがあります。
実際に、楽天のCSV一括更新では文字コード(Shift-JIS)・先頭ゼロの消失・意図しない列の上書きが典型的なトラブル要因として指摘されています(出典は末尾に記載)。「入力した値が間違っていた」よりも「入力していない値が意図せず反映された」ほうが、被害範囲も気づくタイミングも厄介になりやすい点を、まず前提として押さえておく必要があります。
表計算ソフトが数値や記号を書き換える落とし穴
CSVファイルをExcelなどの表計算ソフトで開いて編集すると、ソフト側が数値や文字列を自動的に変換してしまうことがあります。代表的なのが、商品コードの先頭にある「0」が消えてしまう現象や、日付・特定の記号が意図しない形式に書き換わってしまう現象です。編集している本人が気づかないまま保存し、そのままアップロードしてしまうと、値そのものは正しく見えても、モール側では別の意味として扱われてしまうことがあります。文字コードやアップロード形式、反映にかかる時間、元に戻せるかどうかといった仕様は、モールごと・時期ごとに異なるため、本記事で紹介した内容以外の具体的な挙動については、必ず利用しているモールの最新の公式マニュアルで確認したうえで作業してください。
一括更新をやってはいけないタイミングと、反映のタイムラグ
CSV一括更新は、ファイルの中身だけでなく、いつ実行するかも事故の起きやすさと被害の大きさを左右します。反映内容そのものが正しくても、タイミングを誤ることで問題が大きくなったり、発見が遅れたりすることがあります。
セール期間中・広告運用中・受注が集中する時間帯は避ける
スーパーSALEやタイムセールなど、アクセスと注文が普段より集中している期間中に一括更新を行うと、反映の途中で価格や在庫の表示が不安定になった商品を、多くの顧客が同時に目にすることになります。広告を配信している最中も同様です。広告経由で流入した顧客が更新途中の不完全な商品ページに到達すると、機会損失だけでなく、誤った価格での注文につながるおそれがあります。開店直後や特定の配信時間帯など、受注が集中しやすい時間帯も一括更新の実行は避け、比較的アクセスが落ち着いている時間帯にまとめて実行したほうが、問題が起きたときの発見も早くなります。
反映が完了するまでの時間差で、注文が入ってしまう問題
一括更新は、アップロードした瞬間にすべての商品へ同時に反映されるとは限りません。件数やモールの処理状況によっては、反映が完了するまでに数分から数十分の時間差が生じることがあります。この間、一部の商品だけ新しい内容に切り替わり、残りは古い内容のまま表示されるという、不揃いな状態が発生し得ます。価格改定の反映中に旧価格で注文が入ってしまう、在庫を0に更新している途中で売り切れのはずの商品が注文されてしまう、といった事態は、この時間差を考慮せずに一括更新を行った場合に起こり得ます。反映後は、処理がすべて完了したことを管理画面上で確認してから、次の作業に移るようにします。
全件を書き戻すのではなく、変更した行・列だけの差分ファイルを作る
事故を防ぐ次の型は、「全商品分のCSVをダウンロードし、必要な箇所だけ書き換えて、そのまま全件アップロードし直す」という運用をやめることです。この方法は一見シンプルですが、ダウンロードしてから加工している間にも管理画面側でデータが動いている可能性があり、古い情報で他の項目を上書きしてしまうリスクを常に抱えます。
代わりに、次の手順で「変更差分だけ」を明確にしたファイルを作ります。
- 更新直前に最新のCSVを取得し、そのまま元データとして保存する
- 元データを複製し、複製側だけを編集する(元データには一切手を入れない)
- 編集前後を比較し、実際に値が変わった行・列だけを抽出する
- 抽出した差分だけを反映用ファイルとしてまとめる
この手順を踏むことで、「なぜこの行が変わったのか」を後から説明できる状態を保てます。差分が明確であれば、反映後に問題が起きたときも原因の切り分けが早くなります。
少数件だけを先に試し、反映後は件数と実物で突合する
差分ファイルができても、いきなり数百件をまとめてアップロードするのは避けます。先に1件から数件程度の少数だけを含む反映用ファイルを作り、それを本番環境にアップロードして、実際の商品ページがどう変わったかを目視で確認します。
この段階で確認すべきなのは、更新した項目が正しく反映されているかだけではありません。むしろ重要なのは、更新するつもりのなかった項目が意図せず変わっていないかどうかです。価格を1件だけ変えたつもりが、説明文や画像URLなど別の項目まで空欄になっていないか、実際のページ表示で確認します。
アップロードが成功した、と正しく反映された、は別の話
CSVのアップロード自体がエラーなく完了しても、それは「反映されたはず」を意味するだけで、「実際に正しく反映された」ことの証明にはなりません。アップロード後は、まず更新対象として送った件数と、実際にモール側で更新された件数が一致しているかを確認します。件数が一致していない場合、一部の行がエラーで処理されずに残っている可能性があります。件数が一致していても安心はできません。差分の中から数件を無作為に抜き取り、実際の商品ページを開いて、更新した項目・更新していない項目の両方を目視で確認します。この抜き取り確認まで含めて、一括更新の作業は完了したと考えます。
少数件での確認と、反映後の件数突合・抜き取り確認がすべて済んでから、初めて残りの件数を本番反映します。件数を分けて反映する場合は、どこまで反映済みかを都度記録し、同じ行を二重に反映してしまわないようにします。
取り消せない前提で、更新前の状態を退避し、戻せるかを確かめる
CSV一括更新の多くは、いわゆる「元に戻すボタン」を持ちません。反映してしまった内容を取り消したい場合、基本的には更新前の状態を記録したファイルを使って、もう一度上書きし直す以外に方法がないケースが一般的です。だからこそ、更新作業を始める直前に、現状のデータを丸ごと書き出して保存しておくことが欠かせません。
退避データを保存する際は、いつ時点のデータかが分かるようにファイル名に日時を入れておきます。また、退避データそのものを編集用のファイルとして使い回さないようにします。編集は複製したファイルで行い、退避データは万が一のときに戻すための原本として触らずに保管します。
退避ファイルは、本当にその形式で元へ戻せるか
更新前の状態を退避しておいても、その退避ファイルが実際に「元へ戻すために使える形式」で保存されているとは限りません。ダウンロードした形式のままではアップロードできない、必須列が足りずエラーになる、SKU単位の情報が欠けている、といった理由で、いざというときに退避ファイルが使えないケースがあります。退避を取ること自体を目的にせず、退避ファイルを使って実際に戻す手順を一度リハーサルしておくと、本番で事故が起きたときに迷わず対応できます。リハーサルは、影響の小さい商品や非公開の商品を使って行い、本番の公開商品に影響が出ないようにします。
なお、モールや機能によっては、運営側があらかじめ更新前のバックアップデータを用意している場合もあります。自分で退避を取ることに加えて、そうした仕組みがあるかどうかも、利用しているモールの公式マニュアルで確認しておくと安心です。
どこまでAI・ツールに任せ、どこから人が判断するか
差分の抽出や、列数・必須項目・文字コードといった形式チェックは、AIやスクリプトに任せやすい作業です。人が目視で1行ずつ比較するよりも、機械的に変わった箇所を洗い出すほうが漏れが少なくなります。少数件だけを含むテスト用ファイルの作成、反映後の件数突合も、同じように自動化できる部分です。
一方で、実際にアップロードを実行する判断と、反映結果を本番ページで目視確認する作業は、人が持ち続けたほうがよい部分です。取り消せない操作である以上、このタイミングで反映してよいかを最終的に決めるのは、ツールではなく運用している本人であるべきです。
複数モールへ同じ内容を反映するときは、影響の小さい販路から
同じ商品情報を複数のモールへ反映する場合、すべてのモールへ同時にアップロードするのではなく、売上や注文件数の小さいモールから順に反映し、問題が起きていないかを確認してから、主力のモールへ進める順番にします。最初に反映した販路で問題が見つかれば、他のモールへは同じ間違いを持ち込まずに済みます。反映の順番と、それぞれの確認結果を簡単にでも記録しておくと、事故が起きた際にどこまで安全だったかをすぐに振り返ることができます。
本来であれば、ファイルを作る人と実際にアップロードを実行する人を分け、互いにダブルチェックする体制が望ましいところです。ただし一人で運用している場合は、ファイルを作った直後にそのままアップロードするのではなく、一度時間を空けてから見直す、あるいは翌日改めて反映するといった形で、作業のタイミングをずらすだけでも確認の目が変わります。
