トリガーを使用すると、ドキュメントを開くなどの特定のイベントが発生したときに、Apps Script が関数を自動的に実行できます。単純なトリガーは、Apps Script に組み込まれた予約済みの関数セットです。たとえば、ユーザーが Google ドキュメント、スプレッドシート、スライド、フォームのファイルを開いたときに実行される onOpen(e) 関数などがあります。インストール可能なトリガーは、シンプルなトリガーよりも多くの機能を提供しますが、使用前に有効にする必要があります。どちらのタイプのトリガーでも、Apps Script は、イベントが発生したコンテキストに関する情報を含むイベント オブジェクトをトリガーされた関数に渡します。
スタートガイド
単純なトリガーを使用するには、次の予約済み関数名のいずれかを使用する関数を作成します。
onOpen(e)は、ユーザーが編集権限を持つスプレッドシート、ドキュメント、プレゼンテーション、フォームを開いたときに実行されます。onInstall(e)は、ユーザーが Google ドキュメント、スプレッドシート、スライド、フォーム内からエディタ アドオンをインストールしたときに実行されます。onEdit(e)は、ユーザーがスプレッドシートの値を変更したときに実行されます。onSelectionChange(e)は、ユーザーがスプレッドシートで選択を変更したときに実行されます。doGet(e)は、ユーザーがウェブアプリにアクセスしたとき、またはプログラムがウェブアプリに HTTPGETリクエストを送信したときに実行されます。doPost(e)は、プログラムがウェブアプリに HTTPPOSTリクエストを送信したときに実行されます。
上記の関数名の e パラメータは、関数に渡されるイベント オブジェクトです。このオブジェクトには、トリガーが起動した原因となったコンテキストに関する情報が含まれていますが、使用は任意です。
制限事項
ユーザーに承認を求めることなく自動的に起動するシンプルな トリガーには、いくつかの制限があります。
- スクリプトは、Google スプレッドシート、スライド、ドキュメント、フォームのいずれかのファイルにバインドされているか、これらのアプリケーションのいずれかを拡張するアドオンである必要があります。
- ファイルが読み取り専用(閲覧またはコメント)モードで開かれている場合は実行されません。
- スクリプトの実行と API リクエストでは、トリガーは実行されません。たとえば、セルを編集するために
Range.setValue()を呼び出しても、スプレッドシートのonEditトリガーは実行されません。 - 承認が必要なサービスにはアクセスできません。たとえば、Gmail サービスは認証を必要としますが、シンプルな トリガーは匿名の 言語サービスでフレーズを翻訳できるため、シンプルな トリガーではメールを送信できません。
- バインドされているファイルは変更できますが、他のファイルにアクセスするには承認が必要なため、アクセスできません。
- 複雑な一連のセキュリティ制限によっては、現在のユーザーの ID を特定できる場合とできない場合があります。
- 30 秒を超えて実行することはできません。
- 特定の状況では、エディタ用アドオンは、
onOpen(e)とonEdit(e)のシンプルなトリガーを承認なしモードで実行します。このモードでは、いくつかの追加の複雑な処理が必要になります。詳しくは、アドオンの認可ライフサイクルに関するガイドをご覧ください。 - 単純なトリガーには、Apps Script トリガーの割り当て上限が適用されます。
これらの制限は doGet(e) または doPost(e) には適用されません。
onOpen(e)
onOpen(e) トリガーは、ユーザーが編集権限を持つスプレッドシート、ドキュメント、プレゼンテーション、フォームを開くと自動的に実行されます。(トリガーはフォームに回答するときには実行されず、フォームを開いて編集するときにのみ実行されます)。onOpen(e) は、Google スプレッドシート、スライド、ドキュメント、フォームにカスタムのメニュー項目を追加するために最もよく使用されます。
onInstall(e)
onInstall(e) トリガーは、ユーザーが Google ドキュメント、スプレッドシート、スライド、フォーム内からエディタ アドオンをインストールしたときに自動的に実行されます。ユーザーが Google Workspace Marketplace のウェブサイトからアドオンをインストールした場合、トリガーは実行されません。onInstall(e) の機能には制限があります。詳しくは、認可をご覧ください。onInstall(e) の最も一般的な用途は、onOpen(e) を呼び出してカスタム メニューを追加することです。アドオンがインストールされると、ファイルはすでに開いているため、ファイルが再度開かれない限り、onOpen(e) は単独で実行されません。
onEdit(e)
onEdit(e) トリガーは、ユーザーがスプレッドシートの任意のセルの値を変更すると自動的に実行されます。ほとんどの onEdit(e) トリガーは、イベント オブジェクトの情報を使用して適切に応答します。たとえば、次の onEdit(e) 関数は、最後に編集された日時を記録するセルにコメントを設定します。
onSelectionChange(e)
onSelectionChange(e) トリガーは、ユーザーがスプレッドシートで選択を変更すると自動的に実行されます。このトリガーを有効にするには、トリガーを追加した後と、スプレッドシートを開くたびに、スプレッドシートを更新する必要があります。
選択が短時間で複数のセル間を移動する場合、レイテンシを減らすために一部の選択変更イベントがスキップされることがあります。たとえば、2 秒以内に選択の変更が複数回行われた場合、最初と最後の選択の変更のみで onSelectionChange(e) トリガーが有効になります。
次の例では、空のセルが選択されると、onSelectionChange(e) 関数によってセルの背景が赤に設定されます。
doGet(e)、doPost(e)
doGet(e) トリガーは、ユーザーがウェブアプリにアクセスしたとき、またはプログラムがウェブアプリに HTTP GET リクエストを送信したときに自動的に実行されます。doPost(e) は、プログラムがウェブアプリに HTTP POST リクエストを送信したときに実行されます。これらのトリガーについては、ウェブアプリ、HTML サービス、コンテンツ サービスのガイドで詳しく説明しています。doGet(e) と doPost(e) は上記の制限の対象外です。
使用可能なトリガーの種類
シンプルなトリガーの制限によりニーズを満たせない場合は、インストール可能なトリガーを使用できます。次の表に、各イベントタイプで使用できるトリガーのタイプをまとめます。たとえば、Google スプレッドシート、スライド、フォーム、ドキュメントはすべてシンプルなオープントリガーをサポートしていますが、インストール可能なオープントリガーをサポートしているのはスプレッドシート、ドキュメント、フォームのみです。
| イベント | シンプルなトリガー | インストール可能なトリガー |
|---|---|---|
| 開く |
|
|
| 編集 |
|
|
| 選択の変更 |
|
|
| インストール |
|
|
| 変更 |
|
|
| フォーム送信 |
|
|
| 時間主導型(時計) |
|
|
| Get |
|
|
| 投稿 |
|
* Google フォームのオープン イベントは、ユーザーが回答するためにフォームを開いたときではなく、編集者がフォームを修正するために開いたときに発生します。