ray88’s diary

お仕事で困ったとき用の自分用の覚書

GAS スプレッドシートの表を読み取って処理する③(表の書き込み)とまとめ

4. 書き込みも「まとめて setValues」が基本
NG(やりがちパターン)

for (let row = 2; row <= lastRow; row++) {
  sheet.getRange(row, 5).setValue('OK'); // 毎回 setValue
}

推奨(配列にして一発 setValues)

function sampleWriteInBatch() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();
  const rowCount = lastRow - 1;  // 2行目〜

  if (rowCount <= 0) return;

  // 書きたい値を2次元配列に組み立てる(縦1列)
  const colValues = [];
  for (let i = 0; i < rowCount; i++) {
    colValues.push(['OK']); // 各行1列分
  }

  // 2行目〜最終行のE列に一発で書き込む
  sheet.getRange(2, 5, rowCount, 1).setValues(colValues);
}

5. 結局どっちがいいの?(まとめ)
✅ 実務でのおすすめ
行数が多くなる可能性がある処理
→ 「まとめて getValues / setValues」+配列処理が鉄板

1〜数十行くらいの小さい処理
→ 多少 getValue 連発でも、読みやすさ優先でOKなことも多い

考え方の指針
シートへのアクセスはなるべく少なく
→ まとめて取って、あとは「テーブル処理」と割り切る

CSV部品」「ファイル一覧部品」と同じノリで、
まず「レコード配列(オブジェクト配列)」にする

出力部品に渡す
という流れにしておくと、全部見通しよくつながってきます。