【GAS】「変更時」のトリガーを設定した時、getActiveCell関数で発生する例外について
スプレッドシートに関連付けたスクリプトで「変更時」のトリガーを設定したら、「範囲外のセル参照」のエラー通知がきた。
原因
原因を調査したところ、スプレッドシートで「行」または「列」の追加した時に[anchor-blank uri="https://developers.google.com/apps-script/reference/spreadsheet/sheet#getactivecell"]getActiveCell[/anchor-blank]
関数で例外を発生させていた。そのため、例外を捕らえる対応を入れようと考えていた。
try {
const CURRENT_SHEET = SpreadsheetApp.getActive();
const CURRENT_CELL = CURRENT_SHEET.getActiveCell();
// 処理
}
catch ( error ) {
// エラー対応
}
代わりの対応
しかし、リファレンスを眺めていたら、[anchor uri="https://developers.google.com/apps-script/reference/spreadsheet/sheet#getCurrentCell()"]getCurrentCell[/anchor]
という関数を見つけた。
こちらを使用してみたところ、「行」または「列」の追加した時に例外は発生させず、先頭( 選択中 )のセルを取得してくれた。また、この関数はもし選択中のセルがない場合、null
を戻り値として返すようで例外は発生しなさそうだった。
const CURRENT_SHEET = SpreadsheetApp.getActive();
const CURRENT_CELL = CURRENT_SHEET.getCurrentCell();
if ( CURRENT_CELL === null ) return;
// 処理
そのため、今後はgetActiveCell
関数の代わりにgetCurrentCell
関数を使うことにした。