【GAS】スプレッドシートの読み書き
GASでスプレッドシートを使う場合の基本。
読み込みと書き込み。
パフォーマンスを考えるならなるべくまとめて処理するように実装をするべき。
読み込み
const workbook = SpreadsheetApp.getActive();
const sheet= workbook.getSheetByName("シート名");
// 対象シートで値が設定されている最終行を取得
const lastRow = sheet.getLastRow();
// 2次元配列で値を取得
const values = sheet.getRange("A2:G").getValues();
for (let i = 0; i < lastRow; i++) {
rowData = values[i];
// 列情報を取得
let colA = rowData[0];
}
SheetオブジェクトのgetLastRow()とRangeオブジェクトのgetLastRow()では返却される結果が異なるので注意が必要。
前者が対象シートで値が設定されている最終行が返却されるのに対して、後者は、選択範囲の最終行が返却される。
書き込み
const workbook = SpreadsheetApp.getActive();
const sheet= workbook.getSheetByName("シート名");
// 書き込むデータを用意する
const writeData = [];
writeData.push(["A列", "B列", "C列", "D列"]);
writeData.push(["1", "2", "3", "4"]);
// 対象シートのA列で値が設定されている最終行を取得
const lastRow = sheet.getLastRow();
// シートに書き込む(最終行に追記)
// getRange(row, column, numRows, numColumns)
// rowとcolumnは1オリジン
const range = sheet.getRange(lastRow+1, 1, writeData.length, writeData[0].length);
range.setValues(writeData);