これで解決!Google Apps Scriptで使うトリガーのすべて
GASのトリガーって、どう使ったらいいのか分からないです…特に編集時や時間指定のトリガーとか、導入が難しそうで…

猫男

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時間ごとにメッセージをコンソールログに表示する。
解答・解説
編集時トリガーの設定
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
トリガーを正しく使えば、作業を自動化する大きな味方になるさ。トリガーの力を存分に使って、GASを楽しんでくれ!