「一日一回スクリプトを実行したい」
「スプレッドシートを開いたときにスクリプトを実行したい」
スクリプトを手動ではなく、自動で定期的に実行したいと思ったことはありませんか?
スケジュールに従って実行できるのならば、実行を忘れることがなくなります。
今回は、GAS(Google Apps Script)をスケジュールに従って定期的に実行する方法をご紹介します。
スケジュール実行
スケジュール実行(時間主導型実行)とは、特定の時間や間隔でスクリプトを実行する機能です。
スクリプトエディタのメニューから[トリガー] -> [トリガーを追加]を押します。
表示されたダイアログから時間する関数を選択し、実行されるスケジュールを設定します。
今回は一分おきに実行されるように設定しました。
しばらく待って実行数の画面でログを確認してみると、1分ごとに指定した関数が実行されていることが確認できます。
また、設定したトリガー(先ほどスケジュール設定したもの)は、トリガーの画面から確認・編集・削除が可能です。
エラー率や直近の実行日時も確認できます。
時間主導型トリガーで設定できる項目
設定項目 | 設定内容 |
---|---|
実行する関数を選択 | 実行対象となる関数名を指定。 ※同じ関数名が存在すると警告が表示される。 (重複のうち、どちらが実行されるのか明示的に指定ができない) |
イベントのソースを選択 | 時間主導型 |
時間ベースのトリガーの タイプを選択 | ・特定の日時 日時指定の一回のみの実行を指定 ・分ベースのタイマー 分間隔での実行を指定(1分おきに~) ・時間ベースのタイマー 時間間隔での実行を指定(1時間おきに~) ・日付ベースのタイマー 日付間隔での実行を指定 実行される時間帯も指定が必要 ・週ベースのタイマー 曜日指定での実行を指定 実行される時間帯も指定が必要 ・月ベースのタイマー 月間隔での実行を指定 実行される日付と時間帯も指定が必要 |
エラー通知設定 | 処理が失敗した場合にメールで通知を受け取れる。 通知の間隔もエラーごと、一時間おきなど設定が可能。 |
エラー通知設定
設定項目の中に出てきたエラー通知設定について解説します。
トリガーによる実行、特にスケジュールでスクリプトを実行していると処理が失敗した場合に気が付きにくいというデメリットがあります。
処理が成功したか失敗したか、実行されている様子をリアルタイムに監視しているようでは本末転倒です。
そんなときに便利なのが、エラー通知設定です。
トリガーによる実行でエラーが発生した場合にメールで通知を受け取ることができる機能で、毎回ログを確認せずともエラーの検知をすることができます。
通知の間隔はエラーごと、一日分まとめてなど設定が可能です。
イベントをトリガーにした実行
トリガーには、スプレッドシートを開いたときなどイベントをスクリプト実行のきっかけに設定することができます。
今回はプロジェクトをスプレッドシートと関連付けた場合のトリガー設定を解説します。
トリガーの画面から[トリガーの追加]でイベントソースの選択を[スプレッドシートから]にすることで実行のきっかけに設定できます。
今回はスプレッドシートを起動(開いた)ときにスクリプトが実行されるように設定しました。
関連付けられているスプレッドシートを開いた後、ログを確認すると先ほど設定したトリガーによってスクリプトが実行されていることが確認できます。
スプレッドシートのイベントで設定できる項目
イベントの種類 | 説明 |
---|---|
起動時 | 関連付けられたスプレッドシートを開いたときに実行される |
編集時 | セルの値が変更されたときに実行される |
変更時 | スプレッドシートのセルに変更を加えたときに実行される ※編集時のトリガー条件+背景色、書式など |
フォーム送信時 | Google Formと関連付けしている場合のみ フォーム送信時に実行される |
まとめ
今回は、 スクリプトをスケジュールに従って定期的に実行する方法をご紹介しました。
スケジュール実行や定期実行を使いこなし、スクリプトの実行も自動化することで、完全に人の手を介さずに処理を実行することができるようになります。
トリガーを活用して、効率的に仕事を進めましょう!
公式のドキュメントでは編集時と変更時の明確な違いについて記載は見つかりませんでした。
イベントの定義と手元で動作確認をした結果・・・
編集時の条件は、セルの値を変更した場合(行、列、セルの追加含む)。
変更時の条件は、編集時の条件に加えて、セルの色の変更や書式変更なども含めた変更をした場合に実行される挙動のようでした。
変更時を設定した場合に、セルの幅変更や書式変更など些細な条件でトリガーが発行されるので意図したよりも実行回数が多くなる懸念があります。
トリガーとしたい動作をよく検討してから、編集時・変更時を使い分けるようにしましょう。
https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events