Google Apps Script(GAS)のトリガーは、決めた時刻や操作をきっかけに、関数を自動で動かす仕組みです。
公式ドキュメントをもとに、種類と作り方、上限をまとめました。
- 時間主導トリガーは、最短1分ごと〜最長月1回まで
- 編集時・フォーム送信などは、イベント型のインストール型トリガーで作る
- インストール型トリガーは、作成者のアカウントの権限で動く
- トリガーは、1ユーザー1スクリプトあたり20個まで
- 通常のスクリプト実行は1回6分まで。シンプルトリガーは30秒まで
公式資料に基づく説明と掲載コードのローカル検証を掲載しています。
上限や仕様は、Googleの都合で変わることがあります。
数値は、公式ページで最新を確かめてください。
トリガーの種類
トリガーには、シンプルトリガーとインストール型トリガーがあります。
スプレッドシートなどに紐づくスクリプトで、onOpenやonEditという所定の関数名と対応する操作を使うのがシンプルトリガーです。単独のスクリプトに同名の関数を置くだけでは動かず、認可が必要なサービスの利用にも制限があります。
認可が必要な処理をしたいときは、インストール型を使います。
関連記事:onEditが動かない原因
コードで時間主導トリガーを作る
ScriptApp.newTrigger() で作れます。
function myFunction() {
console.log('時間主導トリガーの実行: ' + new Date().toISOString());
}
function createTimeTrigger() {
const exists = ScriptApp.getProjectTriggers().some(function (trigger) {
return trigger.getHandlerFunction() === 'myFunction' &&
trigger.getEventType() === ScriptApp.EventType.CLOCK;
});
if (exists) {
console.log('同じ関数の時間主導トリガーがあります。設定画面で間隔を確認してください。');
return;
}
ScriptApp.newTrigger('myFunction').timeBased().everyHours(6).create();
}公式のドキュメントには、6時間ごとや、毎週月曜の9時といった例があります。
この例は、取得した一覧に自分が作成した同じ関数の時間主導トリガーがあれば、新しく作りません。ただし同時に複数回実行すると、両方が未作成と判断する可能性があります。作成処理は1人が1回ずつ行い、作成後の一覧で重複がないか確認してください。
まずmyFunctionを手動実行してログを確認し、createTimeTriggerを1回実行します。
既存トリガーの間隔は変更しないため、設定画面で6時間ごとになっているか確認してください。
別のアカウントが作成したトリガーは、この一覧取得では確認できません。
スプレッドシートのイベント型トリガー
function createOnOpenTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('myFunction')
.forSpreadsheet(ss)
.onOpen()
.create();
}このコードは対象スプレッドシートの「拡張機能」から開いたApps Scriptで使い、先ほどのmyFunctionも保存します。実行するたびにトリガーを追加するため、先に一覧で同じ関数・同じファイルの「起動時」がないか確認し、1回だけ実行してください。単独のスクリプトでは対象ファイルをIDなどで指定する必要があります。編集時はonOpen()をonEdit()に、回答先スプレッドシートのフォーム送信時はonFormSubmit()に変更します。
画面から設定する手順
- Apps Scriptに実行対象の関数を保存します。同じ処理の登録はコードか画面のどちらか一方で行います。すでにコードで作った場合は、画面で追加せず既存トリガーを確認します。
- 左側の「トリガー」を開き、右下の「トリガーを追加」を選びます。
- 実行する関数とイベントのソースを選びます。
- 時間で動かす場合は「時間主導」、セル編集で動かす場合は「スプレッドシートから」→「編集時」を選びます。
- 保存し、求められた権限を確認して認可します。
フォーム送信は、回答先のスプレッドシートに設定する場合とGoogleフォーム自体に設定する場合で、受け取るイベントが異なります。
上限
| 項目 | 上限 |
|---|---|
| トリガーの数 | 1ユーザー1スクリプトあたり20個 |
| トリガーの合計実行時間 | 無料アカウント90分/日、Workspace 6時間/日 |
| 1回の実行時間 | 6分 |
| 時間主導の間隔 | 最短1分〜最長月1回 |
| アドオンの時間主導 | 1時間に1回まで |
通常、スクリプトやAPIによる変更ではイベント型トリガーは起動しません。例外としてForm.submitGrades()はフォーム送信トリガーを起動するため、採点処理では繰り返し実行を防ぐ確認が必要です。
ファイルが閲覧・コメントのみの状態で開かれたときも、インストール型トリガーは動きません。
まとめ
- 時間で動かすなら、時間主導トリガー
- 権限が要る処理は、インストール型トリガー
- 20個・90分・6分の上限に注意する
参考:Google Apps Script「Installable Triggers」とQuotas for Google Services。2026年10月23日に本文で扱う制限と上限値を再照合しました。
動作確認と停止方法
自動実行の結果は左側の「実行数」で確認します。手動実行の成功だけではトリガーの発火確認になりません。起動時は対象ファイルを編集権限のあるアカウントで開き直し、編集時は練習セルを手で変更し、フォーム送信時は回答画面からテスト回答を送信して、対象関数の新しい実行記録を確認します。時間主導は登録した間隔を待って確認します。
時間主導トリガーは秒単位の定刻実行を保証するものではなく、日次の時刻指定にも実行時刻の幅があります。たとえば毎日9時の指定は9〜10時の間に実行される場合があります。時刻を指定する場合は、Apps Scriptのプロジェクト設定のタイムゾーンも確認してください。
停止するときは「トリガー」で対象の関数とイベントを確かめ、対象トリガーだけを削除します。
確認した範囲と公式資料
2026年10月2日に公式資料と掲載コードを照合しました。
コードの分岐はGoogleのサービスを代替したローカルテストで確認し、実サービスでの実行とは区別しています。
GAS上の認可・トリガー発火・同時実行は未検証です。
関連する手順:GAS│onEditが動かない原因|シンプルトリガーとインストール型の違い
よくある質問:GASのトリガー設定で迷ったときのチェックリスト
GASのトリガーとは、何ですか?
決めた時刻や操作をきっかけに、関数を自動で動かす仕組みです。トリガーには、シンプルトリガーとインストール型トリガーがあります。
シンプルトリガーとインストール型は、何が違いますか?
シンプルトリガーのonOpenやonEditは、対象ファイルに紐づくスクリプトと対応する操作が必要です。単独のスクリプトに同名の関数を置くだけでは動きません。認可が必要なサービスを利用する場合は、作成者の権限で動くインストール型を検討します。
トリガーの上限は、いくつですか?
Google公式の割り当てページ(最終更新2026年9月3日)の記載として、トリガーの数は1ユーザー1スクリプトあたり20個、1回の実行時間は6分、時間主導の間隔は最短1分〜最長月1回と説明しています。合計実行時間は、無料アカウント90分/日、Workspace 6時間/日です。最新の数値は、公式で確認してください。
画面から、トリガーを設定するには?
Apps Scriptの左側の「トリガー」を開き、右下の「トリガーを追加」を選びます。実行する関数とイベントのソースを選び、保存して、求められた権限を認可します。
トリガーが動かないときは?
通常、スクリプトやAPIによる変更ではイベント型トリガーは起動しません。例外としてForm.submitGrades()はフォーム送信トリガーを起動するため、採点処理では繰り返し実行を防ぐ確認が必要です。ファイルが閲覧・コメントのみの状態で開かれたときも、インストール型トリガーは動きません。結果は、左側の「実行数」で確認します。
トリガーを止めるには?
「トリガー」で対象の関数とイベントを確かめ、対象のトリガーだけを削除します。なお、時間主導トリガーは、秒単位の定刻実行を保証するものではありません。
