Apps Script トリガーは、指定されたイベントが発生するたびに、指定されたスクリプト関数(トリガー関数)を実行します。特定のイベントだけがトリガーを発生させることができ、Google Workspace の各アプリケーションは異なるイベントセットをサポートします。
トリガーが発生すると、イベント オブジェクトが作成されます。この JSON 構造には、発生したイベントの詳細が含まれています。イベント オブジェクト構造内の情報は、トリガータイプに応じて異なります。
イベント オブジェクトが作成されると、Apps Script によってパラメータとしてトリガー関数に渡されます。トリガー関数はコールバック 関数です。これを実装することで、イベントに応答するアクションを実行できます。たとえば、エディタ アドオンでは、ドキュメントを開いたときにトリガーを使用してアドオン メニュー アイテムを作成します。この場合は、onOpen(e)
トリガー関数を実装して、イベント オブジェクト内のデータを使用して、アドオンに必要なメニュー アイテムを作成します。
このページでは、エディタのアドオン プロジェクトでトリガーを使用する際のガイドラインを説明します。
エディタのアドオンのトリガーの種類
Apps Script プロジェクトで使用できるほとんどの種類のトリガーは、単純なトリガーやほとんどのインストール可能なトリガーなど、エディタのアドオンで使用できます。使用可能なトリガータイプの正確なセットは、拡張されるアプリケーションによって異なります。
次の表に、エディタのアドオンで使用できるシンプルでインストール可能なトリガーの種類と、対応するイベント オブジェクトへのリンクを示します。
イベント | イベント オブジェクト | シンプルなトリガー | インストール可能なトリガー |
---|---|---|---|
開く エディタ ファイルが開いています。 |
Docs onOpen イベント オブジェクト Forms onOpen イベント オブジェクト Sheets onOpen イベント オブジェクト Slides onOpen イベント オブジェクト |
![]() ![]() ![]() ![]()
|
![]() ![]() ![]() |
インストール アドオンがインストールされます。 |
onInstall イベント オブジェクト |
![]() ![]() ![]() ![]()
|
|
編集 スプレッドシートのセルのコンテンツが変更されました。 |
スプレッドシートの onEdit イベント オブジェクト |
![]()
|
![]() |
変更 シートのコンテンツを編集または書式設定しました。 |
スプレッドシートの onChange イベント オブジェクト |
![]() |
|
フォーム送信 Google フォームが送信されます。 |
フォームのフォーム送信イベント オブジェクト スプレッドシートのフォーム送信イベント オブジェクト |
![]() ![]() |
|
時間主導型(計時) 指定された時間または間隔でトリガーが発動します。 |
時間ベースのイベント オブジェクト |
![]() ![]() ![]() ![]() |
* Google フォームのオープン イベントは、ユーザーが回答のためにフォームを開いたときではなく、エディタがフォームを開いて変更したときに発生します。
アドオンのシンプルなトリガー
シンプル トリガーは予約済みの関数名を使用します。認可が必要なサービスは使用できず、自動的に有効になります。単純なトリガー イベントは、代わりにインストール可能なトリガーで処理することもできます。
シンプルな予約済みトリガーをアドオンに追加するには、次のいずれかの予約済み名を使用して関数を実装します。
onOpen(e)
は、ユーザーがドキュメント、スプレッドシート、プレゼンテーションを開くと実行されます。onOpen(e)
は、エディタでフォームを開いたときにも実行できます(フォームに応答するときには使用できません)。これは、ユーザーが目的のファイルを編集する権限を持っている場合にのみ実行され、ほとんどの場合、メニュー項目の作成に使用されます。onInstall(e)
は、ユーザーがアドオンをインストールしたときに実行されます。通常、onInstall(e)
は単にonOpen(e)
を呼び出すために使用します。これにより、ユーザーがページを更新しなくても、アドオン メニューがインストール直後に表示されます。onEdit(e)
は、ユーザーがスプレッドシートのセル値を変更したときに実行されます。 セルの移動、書式設定、セルの値を変更しない変更によって、このトリガーが発動することはありません。
制限事項
アドオン内の単純なトリガーには、他の種類の Apps Script プロジェクトの単純なトリガーに適用されるのと同じ制限が適用されます。アドオンを設計する際は、次の制限事項に注意してください。
- 読み取り専用(表示またはコメント)モードでファイルが開かれている場合、単純なトリガーは実行されません。この動作により、アドオン メニューにデータが入力されなくなります。
- 特定の状況では、エディタのアドオンが
onOpen(e)
とonEdit(e)
のシンプルなトリガーを無承認モードで実行します。このモードには、アドオン承認モデルで説明されているように、追加的な問題が存在します。 - 単純なトリガーでは、サービスを使用したり、承認を必要とする他の操作を行ったりすることはできません。ただし、アドオン承認モデルで概説している場合を除きます。
- 単純なトリガーの実行時間は 30 秒以内です。単純なトリガー関数で行われる処理の量を最小限に抑えるように注意してください。
- シンプルなトリガーには、Apps Script のトリガーの割り当て上限が適用されます。
アドオン内のインストール可能なトリガー
アドオンは、Apps Script Script
サービスを使用して、インストール可能なトリガーをプログラムで作成および変更できます。手動でインストール可能なアドオンのトリガーは作成できません。シンプルなトリガーとは異なり、インストール可能なトリガーでは認可が必要なサービスを使用できます。
ほとんどの場合、ユーザーが問題に対処できないため、アドオンのインストール可能なトリガーは、ユーザーにエラーを送信しません。したがって、可能な場合は常に、ユーザーに代わってエラーを適切に処理できるようにアドオンを設計する必要があります。
アドオンでは、次のインストール可能なトリガーを使用できます。
- 開くインストール可能なトリガーは、ユーザーがドキュメント、スプレッドシートを開いたとき、またはエディタでフォームを開いたときに実行されます(フォームへの応答時には行われません)。
- 編集インストール可能トリガーは、ユーザーがスプレッドシートのセル値を変更すると実行されます。このトリガーは、セル値を変更しない書式設定または変更に対して起動されません。
- 「変更可能」トリガーは、スプレッドシートの書式設定の編集や変更(行の追加など)など、ユーザーがスプレッドシートに変更を加えたときに実行されます。
フォーム送信インストール可能トリガーは、Google フォームの回答が送信されると実行されます。
時間ドリブン トリガー(クロック トリガーとも呼ばれる)は、特定の時間に、または一定の時間間隔で繰り返しトリガーされます。
インストール可能なトリガーの承認
通常、追加の認証が必要な新しいサービスをデベロッパーが使用するためにアドオンを更新すると、そのアドオンを次回使用するときに再承認するように求められます。
ただし、トリガーを使用するアドオンでは、承認に特殊な課題があります。トリガーを使用してフォームの送信を監視するアドオンを想像してみてください。フォームの作成者は、初めて使用する際にアドオンを承認し、フォームを開かなくても数か月間または数年間実行できます。追加の認証が必要な新しいサービスを使用するようにアドオン デベロッパーがアドオンを更新した場合、フォーム作成者はフォームを再度開くことはなく、アドオンの動作が停止するため、再認証ダイアログは表示されません。
通常の Apps Script プロジェクトのトリガーとは異なり、アドオンのトリガーは、再承認が必要になっても引き続き配信されます。ただし、スクリプトが、承認を必要とするコード行にはないと失敗します。この状況を回避するために、デベロッパーは ScriptApp.getAuthorizationInfo()
メソッドを使用して、公開済みのアドオンのバージョン間で変更されたコードの一部へのアクセスを制限できます。
以下は、認証の失敗を回避するためにトリガー関数で使用する推奨構造の例です。このサンプルのトリガー関数は、Google スプレッドシート アドオン内の form-submit イベントに応答し、再承認が必要な場合は、テンプレート化された HTML を使用してアドオンのユーザーにアラートメールを送信します。
Code.gs
authorizationemail.html
制限事項
アドオン内のインストール可能なトリガーには、他の種類の Apps Script プロジェクトにおけるインストール可能トリガーと同じ制限が適用されます。
これらの制限に加えて、アドオンのインストール可能なトリガーにはいくつかの制限が適用されます。
- 各アドオンでトリガーできるトリガーは、種類ごと、ユーザーごと、ドキュメントごとに 1 つのみです。たとえば、あるスプレッドシートで、あるユーザーが編集トリガーを 1 つしか持てないことがありますが、同じスプレッドシートでフォーム送信トリガーや時間主導トリガーを使用することもできます。同じスプレッドシートへのアクセス権を持つ別のユーザーが、独自のトリガーセットを持つことがあります。
- アドオンを作成できるのは、アドオンを使用するファイルのトリガーのみです。つまり、Google ドキュメント A で使用されているアドオンでは、Google ドキュメント B を開いたときにモニタリングするトリガーを作成できません。
- 時間ベースのトリガーは、1 時間に 1 回を超える頻度で実行することはできません。
- アドオンは、インストール可能なトリガーによって実行されるコードが例外をスローしても、ユーザーにメールを自動的に送信しません。障害のケースを適切に確認して対処するかどうかはデベロッパーが判断します。
- 次のいずれかの状況では、アドオン トリガーは配信を停止します。
- ユーザーがアドオンをアンインストールした場合
- ドキュメントでアドオンが無効になっている場合(再度有効にするとトリガーが再び動作できるようになります)、または
- デベロッパーがアドオンを非公開にしたり、アドオン ストアに破損したバージョンを送信したりした場合。
- アドオン トリガー関数は、許可されていないサービスを使用するコードに到達するまで実行され、この時点で停止します。これは、アドオンが公開されている場合にのみ該当します。通常の Apps Script プロジェクトで同じトリガーが実行されるか、スクリプトが未承認のアドオンが実行を必要とする場合は実行されません。
- インストール可能なトリガーには、Apps Script のトリガーの割り当て上限が適用されます。