Apps Scriptでスプレッドシートをテーブル的に使いたい時に、シートの内容をオブジェクトの配列として取得したいケースがよくある。
シート全体のセルの値はgetValues()
もしくはgetDisplayValues()
メソッドを使って取得することができる。
取得した値のうち、一行目をヘッダー行(keyの配列)として取り出し、残りの行を値として取り出すことで、オブジェクトの配列を作る。
function getRowsAsObjects(sheet) {
var data = sheet.getDataRange().getDisplayValues();
const header = data.shift();
var rows = data.map(function(row) {
var dic = {}
header.forEach((h, idx) => {
dic[h] = row[idx];
});
return dic;
});
return rows;
}
すると、このような結果が得られる。
[{name=Apple, date=2024/01/01}, {date=2024-03-13, name=Orange}]
よく書くコードなので、GASのライブラリとしてまとめた。
https://script.google.com/home/projects/1igMdPkdNu4Yg7u_rnBrXYTh7x15KotD0IpikNvrP52fCLV67ClXJ81ut
スクリプトID: 1igMdPkdNu4Yg7u_rnBrXYTh7x15KotD0IpikNvrP52fCLV67ClXJ81ut
使い方
var objects = SheetValues.getRowsAsObjects(SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TestSheet"))
「Google Apps Scriptでスプレッドシートの内容をオブジェクトの配列として取得する」への1件のフィードバック
コメントは受け付けていません。