GoogleスプレッドシートのonSelectionChangeトリガーについて
2020年4月にこっそりと1個、Googleスプレッドシートのアプデ内容に「新しいシンプルトリガーが追加されました」とありました。すぐに実験してみたのですが、全く動かずそのまま放置していたものがあります。
それが、「onSelectionChange」。シンプルトリガーとは、トリガーから設置するものではなく、onEditやonOpenなどの組み込みの関数の形で発火するもので、構文を掛けば良いだけす。
サンプルファイル
コード
コードといっても、以下のようなコードを書くだけで動き始めます。
1 2 3 |
function onSelectionChange(e) { SpreadsheetApp.getUi().alert(e.range.getCell(1, 1).getValue()); } |
使い方
onEditがセル編集時に動くシンプルトリガー。onOpenがスプレッドシートを開いた時に動くシンプルトリガー。そして、このonSelectionChangeは、「選択してるセルが変更された時」に発火するシンプルトリガーになっています。
しかし、このトリガーなのですが、なんだ挙動が不安定で
- 動かなくなる時がある
- 再度、オーナーのアカウントに切り替えて開いてみて、セルをクリックすると動いたりする
- V8エンジンではなく旧来のエンジンにすると動いたりする
といった具合。また、シートを切り替えても作動します。
また、アクティブなセルが変わっただけで発火してしまうので、コード側もonEdit以上に気を使って書かないと実に鬱陶しい動きになります。使い所としては、セルの範囲選択変更時というよりは、シート変更を検知して、現在のアクティブシートを検知したら即座に実行などくらいかなぁ。
使い所が思いつかない・・・・ブランクセルの処理などonEditでも考慮しなければならないのと同様に、こちらのトリガーも考慮が必要になります。