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

2020年2月12日
GASによるエラー通知

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

原因

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