earthpg:GAS専門のプログラミングスクール

これで解決!Google Apps Scriptで使うトリガーのすべて

GASのトリガーって、どう使ったらいいのか分からないです…特に編集時や時間指定のトリガーとか、導入が難しそうで…
猫男
猫男
catman
catman
心配いらない。catmanがGASトリガーのすべてを教えてあげよう。これを覚えれば、トリガーを自在に操れるようになるさ。

GASトリガーの基本

GASではいくつかのトリガーを使って、特定のイベントに反応させられる。まず、GASで利用できるトリガーの種類だ。

編集時・変更時トリガー

編集時トリガーはスプレッドシートが編集されたときに発動する。変更時トリガーは、そのシートに変更が加えられたときに発動するんだ。

function onEdit(e) {
  Logger.log("セルが編集されました!");
}

上の例でわかるように、onEdit(e)という関数名で、編集イベントを取得できる。

時間指定トリガー

時間指定トリガーは、スクリプトを定期的に実行するのに便利だ。

function myTimeBasedTrigger() {
  Logger.log("定期実行トリガーが発動しました!");
}

このトリガーはGAS管理画面でカスタマイズでき、1分、1時間、1日といった間隔で設定可能だ。

フォーム送信時トリガー

Googleフォームが送信されたときにスクリプトを実行する。

function onFormSubmit(e) {
  Logger.log("フォームが送信されました!");
}

フォームデータが引数eの中で使える。

トリガーの管理と注意点

トリガーの制限と引数

GASには制限がある。一つのプロジェクトに多くのトリガーを設定しない方がいい。トリガーの引数は、イベントオブジェクトeが役に立つ。

トリガーの削除

不要なトリガーは削除しておくのがベストだ。

function deleteTriggers() {
  const triggers = ScriptApp.getProjectTriggers();
  triggers.forEach(trigger => ScriptApp.deleteTrigger(trigger));
}

ScriptAppクラスを使って、指定されたトリガーを削除できる。

トリガーのエラー処理

トリガーがうまく動かないときは、エラーログをチェックしよう。Logger.log()でどこで問題が起きているのか推測可能だ。

catmanさん!トリガーを一覧で見て管理できるとは知りませんでした。それに制限もあるんですね…
猫男
猫男

練習問題:トリガーを設定してみよう

  1. 新しいスプレッドシートを作成し、「編集時トリガー」でセルの変更をログに記録する。
  2. 「時間指定トリガー」で1時間ごとにメッセージをコンソールログに表示する。

解答・解説

編集時トリガーの設定

function onEdit(e) {
  Logger.log("セルが編集されました!セル: " + e.range.getA1Notation());
}

onEdit関数のイベントオブジェクトeには、編集されたセル情報が含まれている。getA1Notation()でセルの場所を取得可能だ。

時間指定トリガーの設定

function myTimeBasedTrigger() {
  Logger.log("定期実行トリガーが発動しました!");
}
function setTimeBasedTrigger() {
  ScriptApp.newTrigger('myTimeBasedTrigger')
    .timeBased()
    .everyHours(1)
    .create();
}

ScriptApp.newTrigger()を使って、'myTimeBasedTrigger'という関数を1時間ごとに動かす。関数setTimeBasedTriggerは一度だけ実行して設定しておこう。

catman
catman
トリガーを正しく使えば、作業を自動化する大きな味方になるさ。トリガーの力を存分に使って、GASを楽しんでくれ!