GASのプログラム(マクロ)をトリガーで自動実行するための手順

スプレッドシートやドキュメントで作成したプログラムは、トリガーにより自動実行することも可能です。

これにより、いちいちプログラムを実行しなくても実行されるため、実行忘れを防ぐと同時に、定期的に実行する操作の完全な自動化を図ることができます。

トリガーには特有の実行制限などもあり、少し注意が必要な部分もあります。しかし完全な自動化という点ではその効果は大きく、試みる価値は十分にあります。その特徴を理解して、ぜひ有効に活用しましょう!

トリガーの種類

ひとくちにトリガーといっても、複数の種類があります。目的に応じて使い分けていきましょう。

スプレッドシートに関連するトリガー

スプレッドシートに加えられた操作を検知して発動するトリガーたちです。

control formula detection?
数式検知を制御できるか?
control checkbox detection?
チェックボックス検知を制御できるか?
other weakness
他の弱点
Type1: use "getLastRow" methodNot available per column
列単位では使用不可
Type2: use "getNextDataCell" method
An error occurs due to narrowing down the filter
フィルター絞り込みによりエラー発生
Type3: use "Math.max"An error occurs when the number of rows is large
行数が大きいとエラーが発生
Type4: use "findLastIndex" method
Type5: use "for" syntax

●「編集」とは…
・スプレッドシートのセル内の値が変更された場合です。(ただし入力モードに入ったとしても、入力の前後で値が変化していない場合は当てはまりません。)
・セルを結合させた場合も対象になります。

●「変更」とは…
・セル内の値の変更に限らず、スプレッドシートに何かしらの変更が加えられた場合です。行の追加・削除、フォントの変更、図形の挿入など、ありとあらゆる変更が対象になります。
・つまり「変更」は「編集」を含んでいますので、両方をトリガー設定すると、編集発動時には変更もあわせて発動します。そのため同じ操作の場合は、重複してしまいます。

日時に関連するトリガー

指定の日時や間隔に従って発動するトリガーたちです。

[table “” not found /]

カレンダーに関連するトリガー

カレンダーに加えられた操作を検知して発動するトリガーたちです。2020/08現在のところ、次の1種類のみです。

[table “” not found /]

トリガー設定の手順

  • スプレッドシート(以下SS)またはドキュメントなどで、メニューバーからツール>スクリプトエディタをクリックする。
  • スクリプトエディタの画面が開きます。
  • 【重要】この段階で、画面右上のgoogleアカウントが正しく選択されているか確認ください。もし希望のアカウントが表示されていない場合などは、そのブラウザでログインするようにしてください。
    ※正しく選択されていないと、エラーが生じる可能性があります。詳しくはコチラをご確認ください。
  • 編集>現在のプロジェクトのトリガー、をクリック
  • トリガーを追加、をクリック

トリガー設定の画面が開くので、適宜設定していきます。

①実行する関数を選択
→発動対象のプログラムを選びます。(通常はプログラマーより指示します)
②実行するデプロイを選択
→Headを選びます。
※早い話が、プロジェクトのversion選択です。Headとは、その時点での最新保存版を指します。
③イベントのソースを選択
→目的に応じて、プログラムの発動方式を選びます。前節参照ください。
④ここは③によって内容が変わりますので、希望に合うものを選んでください。
⑤トリガー実行中にエラーが生じた場合、その旨がメールで通知されます。通知の頻度を選んでください。
⑥保存をクリック

これで、トリガー設定完了です!

※設定したプログラムをまだ実行したことがない場合は、このような警告画面が表示される場合があります。この場合は、リンク先の手順で対応してください。

トリガーを設置した場合の実行アカウントについて

トリガー発動によりプログラムを実行する場合、その実行アカウントは、トリガーを設置したgoogleアカウントになります。

つまり、プログラムの操作対象となるファイルやフォルダーに対して適切な権限をもったアカウントで、トリガーを設定する必要があります。

(特にプログラムがgmailを操作する場合、注意が必要です。プログラムはその実行アカウントのgmailしか操作できません。そのためgmailを操作したい場合は、そのgmailのgoogleアカウントにログインした状態でトリガーを設置する必要があります。)

詳しくはこちらをご覧ください。

トリガーの制限

GASではプログラム実行に関する各種の制限がありますが、トリガーでプログラムを実行する場合は、さらに特有の制限がいくつか加えられます。

詳しくはコチラ(わかりやすいまとめページ)

google公式ドキュメント

トリガー特有の制限は次です。

[table “” not found /]

●トリガーの数… トリガーを設置できる数に制限があることを意味します。

●トリガーの合計実行時間… トリガーでプログラムを実行した合計時間に制限があることを意味します。これを超えるとエラーになります。(1日ごとにリセット)

特に1分に1回とかのハイペースでトリガー発動させた場合、合計実行時間の制限には容易にひっかかりえます(1回の実行時間を3秒としても、3秒×60分×24時間=72分と、かなりギリギリです)

これらに引っ掛かった場合、実行時間を短縮するか、もしくは実行アカウントを複数用意するといった対応が必要になります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です