GoogleAppsScript
RubyOnRails
seed-fu

Google Apps Script でスプレッドシートから Rails の Seed(seed-fu)を生成する

こんなスプレッドシートがあるとして、

スクリーンショット 2018-01-28 12.00.13.png

「スクリプトエディタ」から、

スクリーンショット 2018-01-28 12.04.34.png

以下のような関数を作って実行する。

function companySeed () {
  const COL_INDEX_COMPANY_ID = 0;
  const COL_INDEX_COMPANY_NAME = 1;

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRowNumber = sheet.getLastRow();
  var lastColNumber = sheet.getLastColumn();

  // 見出し行は除く
  var range = sheet.getRange(2, 1, lastRowNumber - 1, lastColNumber);
  var values = range.getValues();

  var seeds = values.map(function(row) {
    var output = "";
    output += "Company.seed do |s|\n"
    output += "  s.id = " + row[COL_INDEX_COMPANY_ID] + "\n";
    output += "  s.name = '" + row[COL_INDEX_COMPANY_NAME] + "'\n";
    output += "end\n";
    return output;
  });

  Logger.log(seeds.join("\n"));;
}

実行後、ログを表示すると、

スクリーンショット 2018-01-28 12.06.02.png

できあがり。

スクリーンショット 2018-01-28 12.11.37.png

最終的にログからコピペなのがかっこ悪いので、もうちょいなんとかしたいが…。