GAS - スプレッドシートのデータをjsonに変換

お仕事でスプレッドシートにまとまったデータをjson形式にする必要があったので、GASことGoogle Apps Scriptでjsonに変換するスクリプトを書いたのでメモします。


元データは、1行目がkeyで2行目以降がkeyに対応するvalueとなるような構造でした。

元データ↓


jsonにパース後↓


コード↓


function myFunction() {
  //スプレッドシートで表示中のシートを取得
  var sheet = SpreadsheetApp.getActiveSheet();
  //埋まっているセルの値を全て取得
  var values = sheet.getSheetValues(1, 1, sheet.getLastRow(), sheet.getLastColumn());
  //json化されたデータをシート上にダイアログで表示
  Browser.msgBox(JSON.stringify(toJson(values)));
  
}

function toJson(values) {
  //param1: 何行目からspliceするか指定
  //param2: 何行分spliceするか指定
  //1行目を1つspliceしたものをkeysへ代入
  var keys = values.splice(0, 1)[0];
  //valuesの1行1行をコールバックで処理
  return values.map(function(row) {
    var obj = {};
   
    row.map(function(column, index) {
      //各keyとvalueの対を連想配列にする
      obj[keys[index]] = column;
    });
    return obj;
  });
}