【GAS】「変更時」のトリガーを設定した時、getActiveCell関数で発生する例外について

2020年2月11日
Google Apps Script

スプレッドシートに関連付けたスクリプトで「変更時」のトリガーを設定したら、「範囲外のセル参照」のエラー通知がきた。

GASによるエラー通知

原因

原因を調査したところ、スプレッドシートで「行」または「列」の追加した時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関数を使うことにした。