シンプルなトリガーと同様に、インストール可能なトリガーを使用すると、ドキュメントを開くなどの特定のイベントが発生したときに、Apps Script が関数を自動的に実行できます。ただし、インストール可能なトリガーは、単純なトリガーよりも柔軟性が高く、承認が必要なサービスを呼び出すことができます。また、時間駆動型(クロック)トリガーなど、いくつかの追加のイベントタイプを提供し、プログラムで制御できます。シンプルなトリガーとインストール可能なトリガーの両方で、Apps Script は、イベントが発生したコンテキストに関する情報を含むイベント オブジェクトをトリガーされた関数に渡します。
制限事項
インストール可能なトリガーは単純なトリガーよりも柔軟性が高いですが、いくつかの制限があります。
- ファイルが読み取り専用(閲覧またはコメント)モードで開かれている場合は実行されません。スタンドアロン スクリプトの場合、トリガーが適切に実行されるように、ユーザーにはスクリプト ファイルに対する閲覧権限が必要です。
スクリプトの実行と API リクエストでは、トリガーは実行されません。たとえば、
FormResponse.submit()
を呼び出して新しいフォームの回答を送信しても、フォームの送信トリガーは実行されません。インストール可能なトリガーは、常に作成者のアカウントで実行されます。たとえば、インストール可能なオープン トリガーを作成すると、同僚がドキュメントを開いたときに(同僚に編集権限がある場合)、そのトリガーが実行されますが、実行されるのはあなたのアカウントです。つまり、ドキュメントが開かれたときにメールを送信するトリガーを作成した場合、メールは常にドキュメントを開いたアカウントではなく、あなたのアカウントから送信されます。ただし、アカウントごとにインストール可能なトリガーを作成すると、各アカウントから 1 通のメールが送信されます。
特定のアカウントは、別のアカウントからインストールされたトリガーを確認できません。ただし、最初のアカウントはこれらのトリガーを有効にできます。
インストール可能なトリガーには、Apps Script トリガーの割り当て上限が適用されます。
時間主導型トリガー
時間駆動型トリガー(クロック トリガーとも呼ばれます)は、Unix の cron ジョブに似ています。時間主導型トリガーを使用すると、スクリプトを特定の日時に実行したり、定期的な間隔で実行したりできます。実行頻度は、1 分ごとから月 1 回まで設定できます。(アドオンは、時間主導型トリガーを 1 時間に 1 回まで使用できます)。時間は多少ランダムになることがあります。たとえば、午前 9 時の定期的なトリガーを作成すると、Apps Script は午前 9 時から午前 10 時までの時間を選択し、そのタイミングを毎日維持して、トリガーが再び起動するまでに 24 時間が経過するようにします。
イベント ドリブン トリガー
インストール可能なイベント ドリブン トリガーは、onOpen()
などの単純なトリガーと概念的には似ていますが、追加のイベントに応答でき、動作も異なります。
たとえば、Google スプレッドシートのインストール可能なオープン トリガーは、編集権限を持つユーザーがスプレッドシートを開くたびに、シンプルな onOpen()
トリガーと同様に有効になります。ただし、インストール可能なバージョンは、承認を必要とするサービスを呼び出すことができます。インストール可能なバージョンは、編集権限を持つ別のユーザーがスプレッドシートを開いた場合でも、トリガーを作成したユーザーの承認で実行されます。
Google Workspace アプリケーションには、インストール可能なトリガーがいくつかあります。
- インストール可能な open トリガーは、ユーザーが編集権限を持つスプレッドシート、ドキュメント、フォームを開いたときに実行されます。
- インストール可能な編集トリガーは、ユーザーがスプレッドシートの値を変更したときに実行されます。
- インストール可能な変更トリガーは、ユーザーがスプレッドシート自体の構造を変更したとき(新しいシートを追加したり、列を削除したりしたときなど)に実行されます。
- インストール可能なフォーム送信トリガーは、ユーザーがフォームに回答したときに実行されます。フォーム送信トリガーには、Google フォーム自体用のものと、フォームがスプレッドシートに送信される場合のスプレッドシート用のものの 2 つのバージョンがあります。
- インストール可能なカレンダーの予定トリガーは、ユーザーのカレンダーの予定が更新(作成、編集、削除)されたときに実行されます。
インストール可能なトリガーは、スタンドアロン スクリプトとバインドされたスクリプトで使用できます。たとえば、スタンドアロン スクリプトは、TriggerBuilder.forSpreadsheet(key)
を呼び出してスプレッドシートの ID を渡すことで、任意の Google スプレッドシート ファイルのインストール可能なトリガーをプログラムで作成できます。
トリガーを手動で管理する
スクリプト エディタでインストール可能なトリガーを手動で作成する手順は次のとおりです。
- Apps Script プロジェクトを開きます。
- 左側の [トリガー] をクリックします。
- 右下の [トリガーを追加] をクリックします。
- 作成するトリガーのタイプを選択して構成します。
- [保存] をクリックします。
プログラムでトリガーを管理する
スクリプト サービスを使用して、トリガーをプログラムで作成および削除することもできます。まず、ScriptApp.newTrigger(functionName)
を呼び出します。これは TriggerBuilder
を返します。
次の例は、2 つの時刻指定トリガーを作成する方法を示しています。1 つは 6 時間ごとに起動し、もう 1 つは毎週月曜日の午前 9 時(スクリプトが設定されているタイムゾーン)に起動します。
次の例は、スプレッドシートのインストール可能なオープン トリガーを作成する方法を示しています。なお、シンプルな onOpen()
トリガーとは異なり、インストール可能なトリガーのスクリプトはスプレッドシートにバインドする必要はありません。スタンドアロン スクリプトからこのトリガーを作成するには、SpreadsheetApp.getActive()
を SpreadsheetApp.openById(id)
の呼び出しに置き換えます。
既存のインストール可能なトリガーをプログラムで変更するには、トリガーを削除して新しいトリガーを作成する必要があります。以前にトリガーの ID を保存した場合は、次の関数に ID を引数として渡すことで削除できます。
トリガーを作成する前に、関連付けられた関数に必要な OAuth 権限がすべてあることを確認することをおすすめします。
トリガーのエラー
インストール可能なトリガーが起動しても、関数が例外をスローしたり、正常に実行されなかったりした場合、画面にエラー メッセージは表示されません。結局のところ、時間主導型トリガーが実行されたり、別のユーザーがフォーム送信トリガーを有効にしたりしたときに、パソコンの前にいない可能性もあります。
代わりに、Apps Script から次のようなメールが届きます。
From: noreply-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
にアクセスします。- 左側の [My Triggers] をクリックします。
トリガーを削除するには、トリガーの右側にあるその他アイコン
> [トリガーを削除] をクリックします。
アドオンのトリガー
インストール可能なトリガーに加えて、アドオンでマニフェスト トリガーを使用できます。詳しくは、Google Workspace アドオンのトリガーをご覧ください。