Yameguun

楽天CSVを特定の商品で抜く

January 20, 2018

楽天ショップで洋服を売っている友人からヘルプがあり仕事を手伝うことになった。
最近、MAC AIRを買ったは良いがエクセルでCSVを開くと固まってしまうとのことだった。
僕「何件あるの?」
友人「いちまんさんぜん」
僕「あ・・・・」

無理に決まってるだろっ!

経緯

楽天のショップでのCSVダウンロードは全商品ダウンロードしてしまうため、非力なMacではCSVを開くことができなかった。
普段はエクセルで開いて特定の商品だけコピペで取得してセール用の値段に書き換えてアップロードしているということだった。

やったこと

Rubyで特定の商品だけを出力するプログラムを作った。これで非力なマシンでも特定の商品だけのCSVを作ることができるようになった。

require 'csv'

csv_data = CSV.read(ARGV[0], headers: true, encoding: "Shift_JIS:UTF-8")
puts "start..."

HEADER = [
  "コントロールカラム",
  "商品管理番号(商品URL)",
  "商品番号",
  "全商品ディレクトリID",
  "タグID",
  "PC用キャッチコピー",
  "モバイル用キャッチコピー",
  "商品名",
  "販売価格",
  "表示価格",
  "消費税",
  "送料",
  "個別送料",
  "送料区分1",
  "送料区分2",
  "代引料",
  "倉庫指定",
  "商品情報レイアウト",
  "注文ボタン",
  "資料請求ボタン",
  "商品問い合わせボタン",
  "再入荷お知らせボタン",
  "のし対応",
  "PC用商品説明文",
  "モバイル用商品説明文",
  "スマートフォン用商品説明文",
  "PC用販売説明文",
  "商品画像URL",
  "商品画像名(ALT)",
  "動画",
  "販売期間指定",
  "注文受付数",
  "在庫タイプ",
  "在庫数",
  "在庫数表示",
  "項目選択肢別在庫用横軸項目名",
  "項目選択肢別在庫用縦軸項目名",
  "項目選択肢別在庫用残り表示閾値",
  "RAC番号",
  "サーチ非表示",
  "闇市パスワード",
  "カタログID",
  "在庫戻しフラグ",
  "在庫切れ時の注文受付",
  "在庫あり時納期管理番号",
  "在庫切れ時納期管理番号",
  "予約商品発売日",
  "ポイント変倍率",
  "ポイント変倍率適用期間",
  "ヘッダー・フッター・レフトナビ",
  "表示項目の並び順",
  "共通説明文(小)",
  "目玉商品",
  "共通説明文(大)",
  "レビュー本文表示",
  "サイズ表リンク",
  "二重価格文言管理番号",
  "カタログIDなしの理由",
  "配送方法セット管理番号",
  "白背景画像URL",
  "メーカー提供情報表示"
]

File.open("upload-item.csv", 'w:Shift_JIS') do |file|

  file << HEADER.join(",") + "\n"

  csv_data.each do |data|

    if data[1] == ARGV[1]
      #intro_msg = "#{data["club"]}クラブ所属の#{data["age"]}歳、#{data["name"]}です。\n"
      file << data
    end
  end
end

puts "complete!"

以上です。