[GAS]スプレッドシートのJSONファイル書き出し

2024/03/27に公開

GAS [Google Apps Script]

スプレッドシートのJSONファイル書き出し

スプレッドシートの今開いているシートの1行目をキー、2行目以降を値とした配列データを、JSONファイルにして自分のDriveに保存してくれる。

function getRowsAsObjectsAndDownload() {
  // スプレッドシートを開く
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 全てのデータを取得する
  var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());

  // その範囲の値を2次元配列として取得する
  var values = range.getValues();
  var oldRow = [];

  // 1行目の値をキーとするオブジェクトの配列を作成する
  var result = values.slice(1).map(function(row) {
    return values[0].reduce(function(obj, key, index) {
      // 値が空だった場合にはそれ以前に存在した最後の値を代入する
      obj[key] = row[index] || oldRow[index];
      oldRow[index] = obj[key];
      return obj;
    }, {});
  });

  // オブジェクトの配列をJSON形式に変換する
  var json = JSON.stringify(result);

  // Blobとして作成する
  var blob = Utilities.newBlob(json, 'application/json', 'data.json');

  // BlobをGoogleドライブに保存する
  var file = DriveApp.createFile(blob);

  // ファイルのダウンロードURLを取得する
  var url = file.getDownloadUrl();

  return url;
}

Discussion