EC-CUBEの商品CSVで、列の数も並びも合っているのに、更新したはずの商品情報が変わらない。サンクユーの保守先で原因になったのは、CSVの1行目にあった商品コードという列名でした。雛形どおりの商品コードに戻し、同じファイルを再度取り込むと、正常に更新できました。
変更したのは、商品に割り当てた品番の値ではなく、その上にある見出しです。同じ症状のときは、取り込みを繰り返す前に、自店の「商品管理」→「商品CSV登録」で雛形をダウンロードし、1行目の文字を見比べてください。
テスト環境では再現せず、実際のCSVで見つかった違い
2021年、以前から商品CSVを使っていた店舗から「急に商品情報を更新できなくなった」と相談がありました。直近のサイト改修は約1か月前で、対象は商品CSVとは別の機能でした。そこでサンクユーは、店舗と同じ構成のテスト環境で、まず商品を新規登録・更新できるかを確かめました。どちらの操作も正常でした。
次に、店舗が実際に使ったファイルを受け取りました。Excelで開くと、列はいつもの位置にあり、項目数も合っています。ところが、見出しを一つずつ読むと、「商品」に続くカタカナだけが違っていました。
| 比較したもの | 列名と違っていた箇所 |
|---|---|
| 雛形の見出し | 商品コード「コード」が全角 |
| 店舗から届いたファイル | 商品コード「コード」が半角 |
この事例で確認できたのは、見出しを直して再度取り込むと更新できたことです。表記がどの作業で変わったか、取り込み時にどのエラーが表示されたかは、当時の記録にはありません。今お使いの店舗で調べる際は、画面にエラーが出ているか、取り込み完了後に一部の項目だけ変わっていないかを最初に確認します。
EC-CUBE 4系で、列名を間違えると何が起きるか
EC-CUBE 4.3.1-p1の標準実装では、CSVの1行目から列名を読み、各行の値をその列名に対応付けます。挙動は、どの列の名前が違っていたかで変わります。
必須列が見つからない場合は、取り込みが始まらない
同版の日本語標準設定で、見出しが必須なのは公開ステータス(ID)、商品名、販売種別(ID)、販売価格の4列です。たとえば「商品名」を「品名」と書き換えると、値が入力されていても必要な「商品名」列を見つけられず、「CSVのフォーマットが一致しません」と表示されます。必須の見出しがそろっていても、各行の値には別途入力条件があります。
「商品コード」は任意列なので、ほかの項目が更新されることがある
商品コードの更新処理は、正しい商品コード列がある場合に実行されます。商品コードではこの列として認識されません。他の条件が正しければ、商品名や販売価格が更新されても、既存の商品コードだけが以前のまま残ることがあります。「一括登録が完了した」という表示に加え、実際に変更したかった項目の値まで照合するのはこのためです。
正しい列名で値を空にした場合も、扱いが変わります。4.3.1-p1の標準の商品規格更新処理では、商品コード列があり、そのセルが空の場合、登録済みのコードをクリアします。見出しを直す際には、その下のデータも残っているか確認してください。
EC-CUBE 4.3.1-p1公式ソース:商品CSVの見出し定義と商品規格の更新処理
雛形と照合し、対象商品を確かめてから再取り込みする手順
変更前の状態と、失敗したファイルを残す。
対象商品を管理画面で開くか商品一覧からCSVを出力し、商品ID、商品コード、変更したかった値を控えます。すでに取り込みを試した場合は、どの値まで変わったかも確認します。届いた元のCSVは保存し、コピーで修正します。
自店の管理画面から雛形を取得する。
「商品管理」→「商品CSV登録」で「雛形ファイルダウンロード」を選ぶと、標準では
product.csvを取得できます。1行目が見出しです。既存商品の値を編集する作業には「商品一覧」から出力したCSVも利用できます。出力項目を変更している店舗では、取り込みに必要な列が含まれているか雛形と照合します。違っている見出しだけを直す。
今回なら雛形から
商品コードをコピーし、作業ファイルの該当する見出しセルへ貼り付けます。列順が異なるファイルに雛形の先頭行を丸ごと貼ると、別の値に見出しが付いてしまいます。値の入った行との対応を保ったまま修正します。再取り込みの前に、商品IDと品番を確認する。
既存商品の更新には対象の「商品ID」を指定します。IDが空の場合は新規登録として扱われるため、商品コードだけを入れて既存商品を更新することはできません。品番に先頭ゼロがある店舗は、たとえば
00123が保存後に123へ変わっていないかも確かめます。少数の商品で、取り込み後の値を照合する。
まずテスト環境で対象を絞って取り込み、更新前に控えた商品IDで同じ商品を開きます。色・サイズなどの規格がある商品は対象の規格まで開き、商品コードや価格が予定どおりかを確認してから本番の一括更新に進みます。
店舗に引き継ぐときは、正常に取り込めたファイルと雛形を分けて保存しておくと、次回も比較できます。販売管理システムやExcelの変換処理が毎回同じ誤った見出しを出力しているなら、CSVを手で直すたびに同じ問題が起きます。その場合は、出力元の項目対応表やテンプレートを直します。
EC-CUBE公式マニュアル:商品CSV登録・雛形のダウンロード・既存商品の更新
2系で使っていた商品CSVを4系へ持ち込むときの注意点
EC-CUBE 2.17.2の標準の商品CSV登録では、先頭の見出し行を読み飛ばし、その環境で設定された列の順序に従って値を割り当てます。一方、今回確認した4.3.1-p1の標準実装では、1行目の列名と各行の値を対応付けます。2系で正常に動いていたCSVでも、4系へ移行するときは新しい環境から雛形を取得し、出力元の各項目がどの列に入るかを確認してください。
独自のCSV取込機能や販売管理システムとの連携を導入している場合は、店舗の取込処理が列名と列位置のどちらを使うかも確認します。日々の作業では、見出しと並び順を固定した店舗用テンプレートを使うと、担当者が交代しても同じ手順で作業できます。
EC-CUBEの商品CSV更新でよくある質問
商品コードに含まれる半角英数字まで全角に直す必要がありますか?
この事例で直したのは、1行目の列名だけです。各商品の品番は店舗で決めた表記を維持します。ファイル全体を一括で全角変換すると、在庫管理や基幹システムとの照合に使っているコードまで変わるおそれがあります。
商品名や価格は変わったのに、商品コードだけ変わらない場合は?
1行目に正しい「商品コード」列があるか、その行の商品ID・規格・入力値が対象と一致するかを確認します。4.3.1-p1の標準では任意列のため、誤記があっても全体のエラーとして表示されるとは限りません。
「CSVのフォーマットが一致しません」と出たら、商品コードを修正すれば解消しますか?
先に、店舗の雛形と必須の見出しを照合します。見出しが正しい場合は、管理画面に表示されたメッセージをそのまま控えます。行番号が示されていれば、その行の列数や各項目の入力条件も確認します。
保守会社には何を伝えると調査が進みますか?
利用中のバージョン、操作した画面、表示されたメッセージ、変更予定だった項目と実際の結果を伝えてください。店舗の雛形と問題のファイルの見出し行があると、列名・列順の差を比べられます。サンプル行が必要な場合は、品番の桁数や先頭ゼロなど、再現に関係する特徴を残します。
EC-CUBEの商品CSV更新・販売管理システムとの連携について
サンクユーでは、店舗の雛形と販売管理側の出力項目を照合し、CSVを作る側で直す項目と、EC-CUBE側の改修が必要な項目を整理します。既存サイトの保守や、バージョンアップに伴うCSV仕様の見直しもご相談いただけます。
投稿者プロフィール
- HTMLコーディングを中心に、フロントエンド開発を担当。
UI/UXを意識した設計・実装を心がけ、使いやすくストレスのない画面づくりを得意としています。
EC-CUBEやWordPressの開発にも取り組み、ECサイト構築領域でのスキルを強化中です。
猫好き。
野良猫を見かけるとつい声をかけてしまいます(ペットロスが怖くて飼わない主義です)。
最新の投稿
EC-CUBE2024年12月17日クロネコwebコレクトSSL証明書のルート証明書変更に伴うEC-CUBEの対応
EC-CUBE2023年10月17日EC-CUBEの商品ページに購入前の質問|BtoB-ECの購入条件確認
EC-CUBE2023年10月2日iPhoneだとEC-CUBEのボタンのタイトルが表示されない
EC-CUBE2023年8月28日EC-CUBEが真っ白で何も表示されないのはPHPのバージョンが原因





