自動化の相談

GAS で自動化 · 2026年11月11日

GASのトリガーの使い方|毎日決まった時刻・編集時に自動で実行する

Google Apps Script (GAS) のトリガーで、スクリプトを毎朝決まった時刻や、スプレッドシートが編集されたときに自動で動かす方法を解説します。画面での設定手順、コードでトリガーを作る・消す方法、onEdit などのシンプルトリガーとの違い、時刻のずれや1日の上限まで公式ドキュメントで確かめました。

GASのトリガーとは

GAS で集計やメール送信のスクリプトを作っても、毎回 [実行] を押していては手間は半分しか減りません。トリガーを付けると、決めたきっかけで関数が自動で動くようになり、人が何もしなくても処理が回ります。

トリガーには、関数の名前を決まった形にするだけで動く「シンプルトリガー」と、画面やコードで設定する「インストール型トリガー」の 2 種類があります。

シンプルトリガー

  • 関数名を onOpen や onEdit にするだけ
  • Gmail など許可が要る機能は使えない
  • 30 秒までしか動けない

インストール型トリガー

  • 画面かコードで設定する
  • 時間主導型・フォーム送信時などが使える
  • メール送信など許可が要る処理も動く

公式ガイドによると、シンプルトリガーは許可が必要なサービスを使えず、30 秒を超えて動けません。メールを送る・別のファイルを書き換えるといった処理には、インストール型トリガーを使います。

インストール型トリガーの種類

インストール型トリガーで使えるきっかけ

種類動くとき使いどころの例
時間主導型決めた時刻・間隔 (1 分ごとから月 1 回まで)毎朝の集計、毎週の報告メール
起動時編集できる人がファイルを開いたときメニューの追加、表示の初期化
編集時シートの値が変更されたとき更新日時の記録、通知
変更時シートの追加や列の削除など構造が変わったとき構造の変化の検知
フォーム送信時フォームに回答が送られたとき自動返信、担当者への通知
カレンダー予定が作成・変更・削除されたとき予定の一覧の更新
出典:Apps Script ガイド「Installable triggers」

画面でトリガーを設定する手順

公式ガイドの手順です。毎朝 9 時台に dailyReport という関数を動かす例で説明します。

  1. トリガーの画面を開く

    Apps Script の画面の左側で [トリガー] (時計のアイコン) を押します。

  2. トリガーを追加する

    右下の [トリガーを追加] を押します。

  3. 関数ときっかけを選ぶ

    実行する関数に dailyReport、イベントのソースに「時間主導型」、タイプに「日付ベースのタイマー」、時刻に「午前 9 時〜10 時」を選びます。

  4. 保存する

    [保存] を押します。初めてのときは、スクリプトがアクセスする範囲の許可を求められるので、自分のアカウントで許可します。

コードでトリガーを作る・消す

トリガーはコードからも作れます。設定を作り直すたびに画面を操作しなくて済み、どんな設定にしたかがコードに残るので、引き継ぎにも向いています。

const HANDLER = "dailyReport";

function setupTrigger() {
  ScriptApp.getProjectTriggers()
    .filter((trigger) => trigger.getHandlerFunction() === HANDLER)
    .forEach((trigger) => ScriptApp.deleteTrigger(trigger));

  ScriptApp.newTrigger(HANDLER)
    .timeBased()
    .atHour(9)
    .everyDays(1)
    .inTimezone("Asia/Tokyo")
    .create();
}

function dailyReport() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ログ");
  sheet.appendRow([new Date(), "毎朝の処理が動きました"]);
}

setupTrigger を 1 回だけ手で実行すると、毎日 9 時台に dailyReport が動くトリガーができます。最初に同じ関数のトリガーを消してから作っているので、何度実行してもトリガーが重複しません。dailyReport の中身は、自分の処理に書き換えてください。

よく使う時間の指定

時間主導型トリガーの書き方

やりたいこと書き方
15 分ごと.timeBased().everyMinutes(15)
6 時間ごと.timeBased().everyHours(6)
毎日 7 時台.timeBased().atHour(7).everyDays(1)
毎週月曜.timeBased().onWeekDay(ScriptApp.WeekDay.MONDAY)
毎月 15 日.timeBased().onMonthDay(15)
決めた日時に 1 回.timeBased().at(new Date(2026, 11, 1, 9, 0))
出典:Apps Script リファレンス「ClockTriggerBuilder」

公式リファレンスによると、everyMinutes に指定できるのは 1・5・10・15・30 のどれかです。nearMinute(45) を付けると、動く分を 45 分の前後 15 分の幅に寄せられます。

編集されたときに動かす (onEdit)

シートが編集されたときに処理をするだけなら、シンプルトリガーの onEdit が手軽です。スプレッドシートに紐づいたスクリプトに次の関数を書くだけで、トリガーの設定は要りません。

function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  if (sheet.getName() !== "案件" || range.getColumn() !== 3) return;

  sheet.getRange(range.getRow(), 4).setValue(new Date());
}

この例では、「案件」シートの C 列 (状況) が書き換えられたら、同じ行の D 列に更新日時を入れます。e.range は編集されたセルの範囲です。

動かないとき・止まったときの確認点

トリガーで気にしたい上限

項目個人のアカウントGoogle Workspace
1 つのスクリプトのトリガーの数 (1 人あたり)2020
トリガーの合計実行時間 (1 日)90 分6 時間
1 回の実行時間6 分6 分
2026年11月11日時点の公式ページの値です。出典:Apps Script「Quotas for Google Services」
  • 時刻がずれる: 公式ガイドによると、9 時の設定は 9 時から 10 時の間のどこかで動き、以後は毎日ほぼその時刻に動きます。ぴったりの時刻が必要な用途には向きません。
  • 失敗したかを知りたい: トリガーの処理が失敗すると、作った人に「Summary of failures for Apps Script」という件名のメールが届きます。Apps Script の画面の左側の [実行数] で、失敗の内容を確かめられます。
  • 人が変わったら動かない: インストール型トリガーは、作った人のアカウントで動きます。作った人が退職してアカウントが止まると動かなくなるため、業務では共用のアカウントで作っておきます。
  • ほかの人のトリガーが見えない: 別のアカウントが作ったトリガーは自分の画面には出ませんが、動いてはいます。同じ処理が二重に動いていないか、作った人に確かめます。

公式の割り当ての一覧のとおり、個人のアカウントでは 1 日のトリガーの実行時間が合計 90 分までです。15 分ごとに数分かかる処理を回すと、すぐに上限に届くので、間隔は必要な分だけにします。

自分で作るのが難しいときは

トリガーを付ければ、毎朝の集計や通知を人の手から離せます。ただ、処理が増えると「どのトリガーが何を動かしているか誰もわからない」「作った人の異動で止まっていたのに気づかなかった」といったことが起きやすくなります。

止まったときに通知する仕組みや、複数の処理をまとめて管理する形まで含めて作り直したい場合は、シートナビの相談フォームからお気軽にご相談ください。

よくある質問

トリガーを止めたいときはどうすればよいですか?

Apps Script の画面の [トリガー] で、止めたいトリガーの右側のメニューから削除します。公式ガイドによると、onOpen などのシンプルトリガーはこの画面に出ないので、止めたいときは関数を消すか名前を変えます。

フォームに回答が来たらすぐにメールを送れますか?

できます。インストール型の「フォーム送信時」トリガーを付けると、回答が送られたときに関数が動きます。メールの送り方は GASでGmailを自動送信する方法 で説明しています。

1 分ごとに動かしても問題ありませんか?

everyMinutes(1) で設定はできますが、1 日のトリガーの合計実行時間の上限 (個人のアカウントで 90 分) に届きやすくなります。新しい行があるかを確かめるだけの処理でも、5 分や 15 分ごとで足りないかを先に考えてください。

シートナビ 編集部Excel・Google スプレッドシート・GAS・VBA で仕事を楽にする、そのまま使える手順とテンプレート集

次に読む