Google Apps Scriptのトリガーについて
Google Apps Script(GAS)は、Googleのさまざまなサービス(Gmail、Google Sheets、Google Driveなど)を自動化するためのスクリプト言語です。トリガーは、特定のイベントが発生した際にスクリプトを実行する方法を設定するものです。本記事ではGoogle Apps Scriptのトリガーの設定方法と種類を紹介します。
概要
Google Apps Scriptには「トリガー」という自動実行用の機能があります。
このトリガーを活用すると特定の条件のときにGASを自動実行することができます。
トリガーの作成方法は2種類あります。1つは画面上から設定できるもの、もうひとつはGASを使って作成するものです。
画面上から設定するトリガーは、GASを使って作成するものに比べ条件の種類が限られていますが、手軽に設定できるのが魅力です。
今回はこの画面上から設定するトリガーについて紹介していきます。
トリガーの設定方法
画面上でのトリガーの設定方法について紹介します。
トリガーはひとつのfunction
につきひとつ設定できます。
1.Google App Scriptのホームから、トリガーを設定したいGASを選択し、画面左のメニューから「トリガー」を選択します。
2.「トリガーを追加」
3.この画面でトリガーを設定します。
GASの紐づき毎に設定できるトリガーの条件
トリガーはそのGASが紐づいているファイルの種類によって設定できる条件が異なります。
以下は公式ガイド(英語)の抜粋です。
※画面上からは設定できない条件も含まれています
1. Googleスプレッドシートに紐づいたGASのトリガー
Googleスプレッドシートに紐づいたGASでは、トリガーイベントのソースとして3つの方法が選択できます。
(1) スプレッドシートから作成
イベントのソースを「スプレッドシートから」とするトリガーは4種類あります。
- 起動時
⇒スプレッドシートを開いたときに自動で処理をはじめます。
例:スプレッドシートを開いたときにその日の日付を入力したい時など - 編集時
⇒スプレッドシートのセルの内容を編集したときに自動で処理をはじめます。
例:内容変更のログを残したい時など - 変更時
⇒スプレッドシートの書式変更や行と列の追加削除、シートの追加削除などを行ったときに自動で処理をはじめます。
例:シートを追加すると目次に書き足したい時など - フォーム送信時
⇒そのスプレッドシートにGoogleフォームの回答データが紐づいている場合、フォームに回答が送信されたとき自動で処理をはじめます。
例:回答内容によってメール送信したい場合など
(2) 時間主導型で作成
イベントのソースを「時間主導型」とするトリガーの設定は単位ごとに異なります。
- 特定の日時
⇒特定の日時に自動で処理をはじめます。
例:イベント日の朝にお知らせを配信したい時など - 分、時間、日付、週、月ベースのタイマー
⇒定期的に実行したい処理などを自動でおこないます。
例:分ベース…5分ごとにメール受信確認
時間ベース…3時間ごとにフォーム集計
日付ベース…毎日12時にメール配信
週ベース…毎週月曜日にシート内容更新
月ベース…毎月15日にシート作成
(3) カレンダーから作成
イベントのソースを「カレンダーから」に設定すると、指定したカレンダーが編集された際に自動で処理をはじめます。
例:カレンダーに新しい予定が作成されたとき、スプレッドシートに内容を書き込みたいときなど
カレンダーオーナーのメールアドレス(カレンダーID)について:
カレンダーオーナーのメールアドレスは、その名の通り参照するカレンダーの持ち主のGoogleアカウント(=メールアドレス)のことです。
例えば、example@gmail.com
というアカウントのカレンダーが編集された際に動作させたいのであれば、example@gmail.com
と入力します。
※トリガー作成者以外のアカウントのカレンダーを参照したい場合は、カレンダーを共有する必要があります。(詳細後述)
カレンダーIDとは、カレンダー1つ1つがもつ固有のIDのことです。
カレンダーID取得方法:
(1) Googleカレンダーを開く。
(2) 左のマイカレンダー(または他のカレンダー)から参照したいカレンダーのオーバーフローメニューを表示する。
(3) 「設定と共有」から設定画面を開く。
(4) 左メニューの「カレンダーの統合」を選択。
このカレンダーIDを用います。(Googleアカウントの持つデフォルトカレンダーであれば、そのアカウントのメールアドレスと同じです
カレンダーの共有について:
トリガー作成者以外のアカウントのカレンダーを参照する場合、そのカレンダー所有者からトリガー作成者へカレンダーを共有する必要があります。
共有方法:
(1) 上記カレンダーIDの取得方法の(3)までを行い、設定画面を開く。
(2) 左メニューの「特定のユーザーと共有」を選択。
(3) 「ユーザーを追加」でトリガー作成者のメールアドレスを入力し送信。
※権限については、「予定の表示(すべての予定の詳細)」で問題ありません。
これでカレンダーの共有は完了です。
2. Googleドキュメントに紐づいたGASのトリガー
Googleドキュメントに紐づいたGASでは、トリガーイベントのソースとして3つの方法が選択できます。
- ドキュメントから作成「起動時」
- 時間主導型
- カレンダーから
イベントのソースを「ドキュメントから」とするトリガーは起動時のみです。
スプレッドシートと同様にドキュメントを開いたときに自動で処理をはじめます。
「時間主導型」「カレンダーから」については、スプレッドシートのトリガーと同様です。
3. Googleスライドに紐づいたGASのトリガー
Googleスライドに紐づいたGASでは、トリガーイベントのソースとして2つの方法が選択できます。
- 時間主導型
- カレンダーから
「時間主導型」「カレンダーから」いずれも、スプレッドシートのトリガーと同様です。
4. Googleフォームに紐づいたGASのトリガー
Googleフォームに紐づいたGASでは、トリガーイベントのソースとして3つの方法が選択できます。
- フォームから作成「起動時」「フォーム送信時」
- 時間主導型
- カレンダーから
イベントのソースを「フォームから」とするトリガーは「起動時」と「フォーム送信時」の2つです。
「起動時」についてはスプレッドシートと同様にフォームを開いたときに自動で処理をはじめます。
「フォーム送信時」はフォームに回答が送信されたときに自動で処理をはじめます。
「時間主導型」「カレンダーから」については、スプレッドシートのトリガーと同様です。
5. 独立したGASのトリガー
独立したGASはスプレッドシートやその他ファイルから作成したものではなく、Googleドライブ等で新規作成から作られた特定のファイルに紐づいていないGASを指します。
この独立したGASでは、トリガーイベントのソースとして2つの方法が選択できます。
- 時間主導型
- カレンダーから
「時間主導型」「カレンダーから」いずれも、スプレッドシートのトリガーと同様です。
まとめ
GASを自動実行するのに欠かせないトリガーですが、それぞれのGASの紐づきによって設定できるトリガーの種類に違いがあることがわかりました。
このうち「時間主導型」と「カレンダーから」についてはどのGASでも同様に設定でき、「時間主導型」は定期実行の応用もしやすいため是非活用していきたいですね。
また、今回紹介した画面上で設定するトリガーとは別にGAS側で作成・設定するトリガーもあります。
そちらについても後日別途まとめてみたいと思います。