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部品」「ファイル一覧部品」と同じノリで、
まず「レコード配列(オブジェクト配列)」にする
出力部品に渡す
という流れにしておくと、全部見通しよくつながってきます。