商品CSV移し替えPythonキット|先頭ゼロ・JANを文字列のまま保持/異常行を理由つきで分離(4,000行の見本つき)
- ダウンロード商品¥ 800

商品データを別のECカートやモールの取込形式に移すときに、次のような問題が起きることがあります。 ・ExcelでCSVを開いて保存すると、13桁のJANコードが「4.90123E+12」のような指数表記になる。 ・商品管理番号「0001」や郵便番号「057-3853」の先頭ゼロが消えて「1」「57-3853」になる。 ・必須項目が空の行やマイナス価格の行が混ざっていて、取込でエラーになる。 このキットは、この移し替えをExcelを通さずに行うPythonスクリプトと設定ファイルのセットです。 ■ できること 1. 列の移し替え 元のCSVの列を、設定ファイル(mapping_config.json)で指定した列名と順番に移し替えます。結果は新しいCSVに書き出します。設定に書いていない列は出力されません。 2. 先頭ゼロと13桁JANを文字列のまま書き出す スクリプトは値を数値に変換しません。そのため、書き出したCSVの中では「0001」や「4901234567890」がそのまま残ります。 ただし、書き出したCSVに引用符などの特別な指定は付けていません。Excelで開いて保存すると、先頭ゼロが消えたり、JANが4.9E+12のように表示されたりする問題がまた起きます。確認するときは文字列として取り込み、Excelで上書き保存しないでください。 3. 異常行を理由つきで別ファイルに分ける 次の行を rejected_rows.csv に分けます。各行には元ファイルの行番号と理由が付きます。 ・設定で必須にした列が空欄 ・JANコードが13桁でない、または数字以外を含む ・設定で指定した数値列がマイナス、または数値として読めない ・税込価格の計算など、変換の途中でエラーになった JANのチェックディジット、商品管理番号の重複、文字数の上限などは確認しません。 4. 税込価格の計算とステータスの置き換え 本体価格と税率から税込価格を計算します。円未満はPythonの round で丸めます。フラグの 1/0 は「公開」「下書き」に置き換えます。どちらも mapping_config.json で設定します。 5. 照合用のレポート migration_report.json に次の内容を書き出します。総行数、正常行数、異常行数、原本CSVのSHA-256、正常行の税込価格の合計、異常行の一覧です。 原本CSVは読み込むだけで書き換えません。 ■ 同梱ファイル(ZIP) ・migrate_csv.py:移行スクリプト本体 ・mapping_config.json:列の対応と検査ルールの設定ファイル ・migrate_csv.ps1:PowerShellから migrate_csv.py を呼び出すスクリプト(Pythonと migrate_csv.py が必要です) ・generate_test_csv.py:テスト用の商品CSV(100行)を作るスクリプト ・samples フォルダ:架空の商品4,000行の見本CSV(うち8行にわざと異常を入れています)と、付属の設定のまま実行した結果(正常3,992行・異常8行・レポート) ・README.md:使い方、設定ファイルの書き換え方、異常行の扱い ■ 動作を確認した環境 ・Windows 11、Python 3.14 ・Windows PowerShell 5.1(付属のPowerShellスクリプトを使う場合) Pythonの標準ライブラリ(csv、json、argparse、hashlib など)だけで動きます。pipで追加のインストールをする必要はありません。 PowerShellスクリプトだけでは動きません。Pythonのインストールが必要です。 Mac、Linux、ほかのPythonのバージョンでは動作を確認していません。 ■ ご注意 ・設定ファイルの税込価格の計算式は、実行時にPythonの eval で評価されます。人から受け取った設定ファイルは、式の中身を確認せずに使わないでください。 ・移行先のカートやモールの取込仕様(列名・文字コード・必須項目)は、それぞれの公式の説明で確かめてから設定してください。特定のカートの取込画面での動作は確認していません。 ・個人・法人を問わず、自分の業務や受託した作業に使えます。スクリプト単体の再配布・転売はご遠慮ください。
