シンプル トリガーと同様に、インストール可能なトリガーでは、ドキュメントを開くなどの特定のイベントが発生したときに Apps Script が関数を自動的に実行します。ただし、インストール可能なトリガーは、単純なトリガーよりも柔軟性があります。つまり、認可を必要とするサービスを呼び出すことができます。また、時間駆動(クロック)トリガーなど、いくつかの追加のイベントを提供します。また、プログラムによって制御できます。シンプルなトリガーとインストール可能なトリガーのどちらにおいても、Apps Script はトリガーされた関数に、イベントが発生したコンテキストに関する情報を含むイベント オブジェクトを渡します。
制限事項
インストール可能なトリガーは単純なトリガーよりも柔軟性がありますが、それでもいくつかの制限があります。
- ファイルが読み取り専用(表示またはコメント)モードで開かれると、実行されません。スタンドアロン スクリプトでトリガーを正しく実行するには、少なくともスクリプト ファイルへの表示権限が必要です。
スクリプトの実行や API リクエストによってトリガーが実行されることはありません。たとえば、
FormResponse.submit()
を呼び出して新しいフォーム レスポンスを送信しても、フォームの送信トリガーは実行されません。インストール可能なトリガーは常に、そのトリガーを作成したユーザーのアカウントで実行されます。たとえば、インストール可能なオープン トリガーを作成すると、同僚がドキュメントを開いたときにそれがトリガーされます(同僚が編集権限を持っている場合)。ただし、これはアカウントとして実行されます。つまり、ドキュメントを開いたときにメールを送信するトリガーを作成すると、メールは常に自分のアカウント(ドキュメントを開いたアカウントなど)から送信されます。ただし、アカウントごとにインストール可能なトリガーを作成すると、アカウントごとに 1 通のメールが送信されます。
最初のアカウントは、最初のアカウントからトリガーをトリガーできますが、2 番目のアカウントからインストールされたトリガーを表示できません。
インストール可能なトリガーには、Apps Script のトリガーの割り当て上限が適用されます。
時間主導のトリガー
時間駆動トリガー(クロックトリガーとも呼ばれます)は、Unix の cron ジョブに似ています。時間駆動型トリガーを使用すると、スクリプトを特定の時間または定期的な間隔(1 分ごとまたは 1 か月に 1 回など)に実行できます。(アドオンでは、時間駆動型のトリガーを最大で 1 時間に 1 回使用できます)。この時間はわずかにランダム化されることがあります。たとえば、繰り返しの午前 9 時のトリガーを作成した場合、Apps Script は午前 9 時から午前 10 時までの時刻を選択して、トリガーが再び配信されるまでに 24 時間経過するように、日をまたいで時間を維持します。
イベント ドリブン トリガー
インストール可能なイベント ドリブン トリガーは、onOpen()
のようなシンプルなトリガーと概念的によく似ていますが、追加のイベントに応答でき、異なる動作をします。
たとえば、Google スプレッドシートのインストール可能なオープン トリガーは、シンプルな onOpen()
トリガーと同様に、編集権限を持つユーザーがスプレッドシートを開くたびに有効になります。ただし、インストール可能なバージョンでは、認可を必要とするサービスを呼び出すことができます。編集権限を持つユーザーがスプレッドシートを開いた場合でも、インストール可能なバージョンはトリガーを作成したユーザーの承認で実行されます。
Google Workspace アプリには、インストール可能なトリガーがいくつかあります。
- ユーザーがスプレッドシート、ドキュメント、フォームを編集すると、インストール可能なトリガーがトリガーされます。
- ユーザーがスプレッドシートの値を変更すると、インストール可能な編集トリガーが実行されます。
- ユーザーがスプレッドシート自体の構造を変更する(新しいシートを追加する、列を削除するなど)と、インストール可能な変更トリガーが実行されます。
- ユーザーがフォームに回答すると、インストール可能なフォーム送信トリガーが実行されます。フォーム送信トリガーには 2 つのバージョンがあります。1 つは Google フォーム用、もう 1 つはフォームがスプレッドシートに送信される場合のスプレッドシートです。
- インストール可能なカレンダー トリガーは、ユーザーのカレンダーの予定が作成、編集、削除されたときに実行されます。
インストール可能トリガーは、スタンドアロン スクリプトやバインドされたスクリプトで使用できます。たとえば、スタンドアロン スクリプトは、TriggerBuilder.forSpreadsheet(key)
を呼び出してスプレッドシートの ID を渡すことで、任意の Google スプレッドシート ファイルのインストール可能なトリガーをプログラムで作成できます。
トリガーの手動管理
スクリプト エディタでインストール可能なトリガーを手動で作成するには、次の手順を行います。
- Apps Script プロジェクトを開きます。
- 左側の [トリガー] をクリックします。
- 右下の [トリガーを追加] をクリックします。
- 作成するトリガーのタイプを選択して構成します。
- [保存] をクリックします。
トリガーをプログラムで管理する
また、スクリプト サービスを使用して、トリガーをプログラムで作成および削除できます。まず、TriggerBuilder
を返す ScriptApp.newTrigger(functionName)
を呼び出します。
次の例は、6 時間ごとに配信されるトリガーと、毎週月曜日の午前 9 時(スクリプトが設定されているタイムゾーン)にトリガーされる 2 つの時間駆動トリガーを作成する方法を示しています。
次の例は、スプレッドシートにインストール可能なオープン トリガーを作成する方法を示しています。シンプルな onOpen()
トリガーとは異なり、インストール可能なトリガーのスクリプトをスプレッドシートにバインドする必要はありません。このトリガーをスタンドアロン スクリプトから作成するには、SpreadsheetApp.getActive()
を SpreadsheetApp.openById(id)
の呼び出しに置き換えます。
既存のインストール可能なトリガーをプログラムで変更するには、削除して新しいトリガーを作成する必要があります。以前にトリガーの ID を保存している場合は、その ID を引数として次の関数に渡すことで削除できます。
トリガーのエラー
インストール可能なトリガーが起動しても、関数が例外をスローする場合や正常に実行できない場合、画面にエラー メッセージは表示されません。時間ベースのトリガーが実行されたり、他のユーザーがフォーム送信トリガーを有効にしたときは、パソコンを使用していない可能性があります。
代わりに、Apps Script から次のようなメールが届きます。
From: apps-scripts-notifications@google.com Subject: Summary of failures for Google Apps Script Your script has recently failed to finish successfully. A summary of the failure(s) is shown below.
このメールには、トリガーを無効化または再構成するためのリンクが記載されています。スクリプトが Google スプレッドシート、ドキュメント、フォーム ファイルにバインドされている場合、メールにはそのファイルへのリンクも含まれます。このリンクを使用すると、トリガーを無効にするか、スクリプトを編集してバグを修正できます。
Google アカウントに関連付けられているすべてのトリガーを確認して、不要になったトリガーを無効にする手順は次のとおりです。
script.google.com
にアクセスします。- 左側にある [マイトリガー] をクリックします。
トリガーを削除するには、トリガーの右側にあるその他アイコン
> [トリガーを削除] をクリックします。
アドオンのインストール可能なトリガー
アドオンでインストール可能なトリガーの使用方法については、アドオン トリガーをご覧ください。