GAS トリガーについて

GAS のトリガーの種類と活用方法

Google Apps Script(GAS)のトリガーは、特定のイベントやタイミングでスクリプトを自動実行するための仕組みです。
トリガーを活用することで、手動操作なしに定期的な処理やイベントに応じた自動化を実現できます。
トリガーは主に以下の2種類に分けられます。

シンプルトリガー

シンプルトリガーは、特定のスプレッドシートやドキュメントの操作(編集、開く、フォーム送信など)に反応して自動的に実行される関数です。
以下のような特徴があります

  • 設定不要:コード内で特定の関数名(onOpen, onEdit)を使うだけで動作。
  • 制限:実行時間は30秒以内に限定され、認証が必要な処理(外部API呼び出し)は実行できない。
  • 主なシンプルトリガー:
    • onOpen(): スプレッドシートやドキュメントが開かれたとき。
    • onEdit(e): スプレッドシートが編集されたとき。
    • onChange(e): スプレッドシートの構造が変更されたとき(シート追加/削除)。
    • onFormSubmit(e): Googleフォームが送信されたとき。

インストール可能なトリガー

インストール可能なトリガーは、ユーザーが明示的に設定するトリガーで、より柔軟な自動化が可能です。
以下のような特徴があります。

  • 設定方法:GAS エディタの「トリガー」メニューから手動設定、またはスクリプトでプログラム的に設定。
  • 機能:時間ベースのスケジュール実行やカスタムイベントに対応。認証が必要な処理も実行可能。
  • 主なトリガーの種類:
    • 時間駆動型トリガー:特定の時間間隔(1時間ごと)や特定の日時(毎日午前9時)に実行。
    • イベント駆動型トリガー:スプレッドシート、フォーム、カレンダーなどのイベント(例:フォーム送信、カレンダー更新)に反応。
    • カレンダートリガー:Googleカレンダーのイベント開始時や更新時に実行。

注意点

  • 実行制限:リガーの実行にはGoogleアカウントのクォータ(1日あたり90分~6時間)が適用される。
  • エラーハンドリング:トリガーは自動実行されるため、エラー発生時に通知を設定する(メール通知)か、ログを確認する仕組みが必要。
  • 権限:インストール可能なトリガーはスクリプト実行時にユーザーの権限を借用するため、初回実行時に認証が必要。

トリガーの使用方法

まずは、スプレッドシートとフォームを例に、シンプルトリガーとインストール可能なトリガーの両方を紹介します。

シンプルトリガー(スプレッドシート編集時に実行)

スプレッドシートのA列に値が入力されると、同じ行のB列に編集時刻を自動記録します。
onEdit() はシンプルトリガーなので特別な設定は不要です。

// スプレッドシートが編集されたときに実行される
function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const range = e.range;
  const value = range.getValue();
  
  // A列が編集された場合、B列に編集時刻を記録
  if (range.getColumn() == 1) {
    sheet.getRange(range.getRow(), 2).setValue(new Date());
  }
}

インストール可能なトリガー(フォーム送信時にメール送信)

GAS 編集画面の左部トリガーメニュー(時計アイコン)を開き、「トリガーを追加」をクリック。
イベントの種類を「フォーム送信時」に設定し、対象フォームを選択。
必要に応じて通知設定を追加(エラー時にメール送信など)。

// Googleフォーム送信時に実行
function onFormSubmit(e) {
  const responses = e.response.getItemResponses();
  const email = responses[0].getResponse(); // フォームの1番目の質問をメールアドレスにする
  const subject = 'フォーム送信完了!';
  let message = '以下の内容でフォームが送信されました:\n\n';
  for (let i = 0; i < responses.length; i++) {
    message += responses[i].getItem().getTitle() + ': ' + responses[i].getResponse() + '\n';
  }
  // メール送信
  MailApp.sendEmail(email, subject, message);
}

時間駆動型トリガー(毎日スプレッドシートのデータをクリア)

GAS 編集画面の左端トリガーメニュー(時計アイコン)を開き、「トリガーを追加」をクリック。
イベントの種類を「時間主導型」に設定し、「日時タイマー」→「毎日」→「午前0時~1時」など指定。
保存して認証を完了。

function clearSheetDaily() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  sheet.getRange("A2:D").clearContent(); // A2:Dの範囲をクリア
}

また、トリガーは GAS のスクリプト内でも設定できます。
clearSheetDaily() を毎日0時に実行するトリガーを設定してみます。
下記スクリプトを1回実行するだけでトリガーが登録されます。

function createTimeDrivenTrigger() {
  ScriptApp.newTrigger("clearSheetDaily")
    .timeBased()
    .everyDays(1)
    .atHour(0)
    .create();
}

リガーの実行状況はGASエディタの左部「実行ログ」や「スタックドライバーログ」で確認できます。
関数をデバッグしてからトリガーの設定をしましょう。

まとめ

ということで、GAS のトリガーについて簡単に解説してみました。
使い方次第でとても強力なものになりますが、頻繁に呼び出しすぎてしまうこともあるので、トリガーの実行タイミングをしっかり見極めましょう。
また、何かお手伝いできそうなことがあればお気軽にお声掛けください。
Xにて依頼・要望お待ちしております。

*このサイトを参考に何かを作成した際に起こった全ての責任を負いません*