LANG SELRCT

コードを書く場所

2019年7月9日火曜日

Googleドライブ内のJSONファイルをスプレッドシートに書き出したい


Googleドライブ内にあるこのようなJSONファイルを


このようにスプレッドシートへ書き出したい

ということを実現したくて書いたコードです。

JSON_FILE_ID と SPREADSHEET_URL を設定して
run()を実行すると上記画像のようにJSONデータがシートに入力されます。

コード.gs
var file_id = "JSON_FILE_ID";
var ss_url = 'SPREADSHEET_URL';

function run() {
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sheet = ss.getSheets()[0];
  var objs = getObjs();
  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 getObjs() {
  var file = DriveApp.getFileById(file_id);
  var blob = file.getBlob()
  var data = blob.getDataAsString();
  var jobj = JSON.parse(data);
  return jobj;
}


関連記事

Googleドライブ内のJSONファイルを取得する
オブジェクトのキーと値をスプレッドシートに書き込みたい