LANG SELRCT

コードを書く場所

2019年7月9日火曜日

オブジェクトのキーと値をスプレッドシートに書き込みたい


こういうオブジェクトたちがいて

var objs = [
    {"en": "Aries", "ja": "おひつじ座"},
    {"en": "Taurus", "ja": "おうし座"},
    {"en": "Gemini", "ja": "ふたご座"},
    {"en": "Cancer", "ja": "かに座"},
    {"en": "Leo", "ja": "しし座"},
    {"en": "Virgo", "ja": "おとめ座"},
    {"en": "Libra", "ja": "てんびん座"},
    {"en": "Scorpius", "ja": "さそり座"},
    {"en": "Sagittarius", "ja": "いて座"},
    {"en": "Capriconus", "ja": "やぎ座"},
    {"en": "Aquarius", "ja": "みずがめ座"},
    {"en": "Pisces", "ja": "うお座"}
  ];


スプレッドシートへこのように入れたい


ということを実現するコードを書きました。


以下のコード.gsで var ss_url の SPREADSHEET_ID を変更してrun()を実行すると

指定したスプレッドシートの先頭シートに上記画像のように入力されます。
JSON を parse した objs を用意して使うことを想定しています。

コード.gs
function run() {
  var ss_url = 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0';
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sheet = ss.getSheets()[0];
  var objs = returnObjs();
  objsToSheet(objs, sheet);
}

function objsToSheet(objs, sheet) {
  var obj = objs[0];
  var keys = Object.keys(obj);
  var arrays = [keys];// keysを一行目に入れておく
  for(var i = 0; i < objs.length; i++) {
    var obj = objs[i];
    var values = [];
    for(var j = 0; j < keys.length; j++) {
      var value = obj[keys[j]];
      values.push(value);
    }
    arrays.push(values);
  }
  setDataToSheet(sheet, arrays)
}

function setDataToSheet(sheet, arrays){
  var last_row = sheet.getLastRow();
  var start_row = last_row + 1;
  var start_col = 1;
  var num_rows = arrays.length;
  var num_cols = arrays[0].length;
  var range = sheet.getRange(start_row, start_col, num_rows, num_cols);
  range.setValues(arrays); 
}

function returnObjs() {
  var objs = [
    {"en": "Aries", "ja": "おひつじ座"},
    {"en": "Taurus", "ja": "おうし座"},
    {"en": "Gemini", "ja": "ふたご座"},
    {"en": "Cancer", "ja": "かに座"},
    {"en": "Leo", "ja": "しし座"},
    {"en": "Virgo", "ja": "おとめ座"},
    {"en": "Libra", "ja": "てんびん座"},
    {"en": "Scorpius", "ja": "さそり座"},
    {"en": "Sagittarius", "ja": "いて座"},
    {"en": "Capriconus", "ja": "やぎ座"},
    {"en": "Aquarius", "ja": "みずがめ座"},
    {"en": "Pisces", "ja": "うお座"}
  ];
  return objs;
}



関連記事

スプレッドシートからJSONファイルを作ってGoogleドライブに保存する(keyは1行目)