【GAS】「変更時」のトリガーを設定した時、getActiveCell関数で発生する例外について
スプレッドシートに関連付けたスクリプトで「変更時」のトリガーを設定したら、「範囲外のセル参照」のエラー通知がきた。

原因
原因を調査したところ、スプレッドシートで「行」または「列」の追加した時にgetActiveCell
関数で例外を発生させていた。そのため、例外を捕らえる対応を入れようと考えていた。
考えていた処理
try {
const CURRENT_SHEET = SpreadsheetApp.getActive();
const CURRENT_CELL = CURRENT_SHEET.getActiveCell();
// 処理
}
catch ( error ) {
// エラー対応
}
代わりの対応
しかし、リファレンスを眺めていたら、getCurrentCell
という関数を見つけた。
こちらを使用してみたところ、「行」または「列」の追加した時に例外は発生させず、先頭( 選択中 )のセルを取得してくれた。また、この関数はもし選択中のセルがない場合、null
を戻り値として返すようで例外は発生しなさそうだった。
今後の対応
const CURRENT_SHEET = SpreadsheetApp.getActive();
const CURRENT_CELL = CURRENT_SHEET.getCurrentCell();
if ( CURRENT_CELL === null ) return;
// 処理
そのため、今後はgetActiveCell
関数の代わりにgetCurrentCell
関数を使うことにした。