GAS事始め(その3):GASのイベントを理解する(基礎編)
GASではスプレッドシート上*1で発生したイベントを検知して、イベント発生時に任意の処理を実行することができます。
今回はGASで定義されている各イベント種別とイベント発生時に実行されるコールバックメソッドを確認してみましょう。
2つのイベントタイプ
GASのイベントには様々な種類がありますが、イベントのタイプによって利用できる条件が異なります。
現在規定されているイベントのタイプは以下の2つです。
- Simple Triggers
- Installable Triggers
Simple Triggersではファイル操作に伴う基本的なイベントをハンドリングできます。Installable Triggersでは、Simple Triggersの一般的なイベントに加えて、ユーザ認証が必要な処理や定期的な実行などより高度な処理を実行できます。
今回はSimple Triggersに絞って確認してみます。
Simple Triggers
Simple Triggersは、スプレッドシートやドキュメントなどを操作した時の基本的なイベントをハンドリングする、文字通りシンプルなイベントです。Simple Triggersで利用できるイベントは以下のとおりです。
メソッド名 | 実行タイミング |
---|---|
onOpen(e) | 閲覧権限のあるユーザが、このスクリプトが紐付けられたファイルを開いた時 |
onEdit(e) | スプレッドシートで任意のセルの値を変更した時 |
onInstall(e) | ユーザがアドオンをインストールした時 |
doGet(e) | APIとして公開されているGASに対してhttp/GETリクエストを行った時 |
doPost(e) | APIとして公開されているGASに対してhttp/POSTリクエストを行った時 |
各メソッドの引数にeという値がありますが、これはイベントが発生したオブジェクトを表します。各コールバックメソッドが実行される際、このパラメータeから様々なデータを取得して利用します。
各メソッド実行時に渡される引数はリファレンスを参照してください。
Event Objects | Apps Script | Google Developers
サンプルコード
onInstallはアドオンのインストール時、doGet/doPostはスタンドアロン型のGASで利用するものなので、Simple Triggersのイベントをハンドリングする場合は、基本的にonOpenとonEditを使うことになると思います。
以下はonOpenとonEditのサンプルコードです。
GAS事始め(その3):Simple Triggersサンプル
onOpenではスプレッドシートにカスタムメニューを追加しています。ポイントは4、5行目のaddItemで、1つ目の引数にメニュー名、2つ目の引数にメニュー選択時に実行されるメソッド名を指定することができます。
onOpenでメニューを追加することにより、スプレッドシートを開いた時にカスタムメニューを追加することができます。実際に追加されたメニューは以下のようになります。
このメニューからRedbullを選択すると、4行目のaddItem("Redbull", "redbullSelected")
で追加したredbullSelected
が実行されます。
onEditでは、ユーザによって変更されたセルの内容をA2セルに表示します。適当なセルに値を入力すると以下のようになります。
なおonEditはユーザによる編集が行われた時にしか実行されないようで、カスタムメニューからredbullSelected
やmonsterSelected
を選択した時には実行されませんでした。
以上、Simple Triggersのイベントを簡単に見てきましたが、スプレッドシートのオープン時にメニューを追加することで誰でもスクリプトが実行できるようになるので、色々な使いみちがありそうですね。
参考
Simple Triggers | Apps Script | Google Developers
*1:スプレッドシートに限らず、ドキュメントやフォームなども同様