今回は作成した処理を定期的に実行する方法を紹介します。
以下の記事では手動実行するケースを紹介していますが、今回の対応を行うことでPCをシャットダウンしていても指定された日時に実行させることが可能になります。
前回のおさらい
以下コードにより、スプレッドシートのメニュー実行からアクティブシートの一番左上(cell1:1)に”Hello world”を入力することが出来ました。
function myFunction() {
var sheet=SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1).setValue("Hello World");
}
function onOpen(event){
// 配列で登録したいメニューを追加する
var func = [
// name:部分にメニューで表示したい名前
// functionName:登録したいfunction名
{name:'Hello World Function', functionName:'myFunction'}
];
var sheet = SpreadsheetApp.getActiveSpreadsheet();
// Sheet上のメニューに登録する名前
sheet.addMenu('myMenu', func);
}
今回はトリガによる実行を行うため、まずメニュー登録用のonOpen functionを削除します。
続けて固定文字だと反映されたか分かりづらいため、実行時間を入力するコードに変更して実行します。
function myFunction() {
var sheet=SpreadsheetApp.getActiveSheet();
// 日時を取得
var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd hh:mm:ss')
// 取得した日時を入力
sheet.getRange(1,1).setValue(date);
}

実行後にスプレッドシートを確認すると以下のようにA1に実行時間が記録されていることを確認します。

トリガを登録する
ここまで確認出来たら準備完了のためトリガの登録にうつります。まずはエディタのメニューから時計マークのボタンをクリックします。

以下画面が表示されますので、トリガーを追加ボタンをクリックします。

以下の通りトリガーの設定画面にうつりますので、各設定を行っていきます。

1. 実行する関数を選択
トリガによる起動で実行するfunctionを選択します。複数のfunctionを作成している場合に選択します。今回のフロー通りに作成していると「myFunction」のみとなっていますので、そのままにします。
2.実行するデプロイを選択
HEADのままとします。この内容はバージョン管理している場合にバージョン選択して実行することが可能な機能です。HEADは最新のコードを利用するという意味になります。
今回はHEADしか選択肢がないはずなので、そのままにします。以下マニュアルになりますが現時点では特に把握しなくても大丈夫です。
https://developers.google.com/apps-script/concepts/deployments
3. イベントのソースを選択
実行するトリガの種類を選択します。大きく以下3種類があります。
- スプレッドシートから
- 時間主導型
- カレンダーから
ひとつずつ見ていきます。
スプレッドシートから
スプレッドシートのイベントを検知して実行する設定です。スプレッドシート起動時や変更時に特定の処理を実行させたい場合に有効です。
例)値を変更した場合に計算結果を別セルに入力する等
時間主導型
繰り返しの時間設定を行い、設定された時間置きに毎回実行されるタイプのトリガです。
毎日8時に実行する、1時間おきに実行する処理などを行いたい場合に利用されます。
特定の日時 | 分単位で特定日時の指定が可能 |
分タイマー | 1, 5, 10, 30分の指定周期で実行可能 |
時タイマー | 時間帯の指定が可能。毎日午前10時台など。分単位の指定不可 |
日タイマー | 各曜日指定+時間帯の指定が可能。火曜日の午前10時台など。分単位の指定不可 |
週タイマー | 各曜日指定+時間帯の指定が可能。火曜日の午前10時台など。分単位の指定不可 |
月タイマー | 日付指定 +時間帯の指定が可能。20日の午前10時台など。分単位の指定不可 |
カレンダーから
Googleカレンダーを同じアカウントで利用している場合に有効なトリガです。カレンダー内容が編集された際に差分をメールで送ることが出来ますが、多少設定が複雑になるため別記事で紹介しようと思います。
エラー通知設定
コード内容の不備等により実行失敗した場合に通知するかどうかの設定です。こちらは気づけるように「今すぐ通知を受けとる」がお勧めですが、失敗しても即時対応は不要な場合は1日おきの通知などでも大丈夫です。
設定内容例
今回は時間主導型の設定とし、毎日午後9時に実行させる設定とします。日付ベースをトリガーを選択し、時刻部分に午後9時~10時をセットしています。

成功すると該当時間帯に起動されスプレッドシート上の値が起動時間に変化していることが確認できます。
トリガー利用の注意点
無料利用の場合、トリガーによる利用回数の制限が設けられています。通常利用ではあまり気にする制限回数ではありませんが、過剰な頻度で実行することにより実行不可になる場面が出てくるため注意してください。
実行回数は1日単位でリセットされます。
まとめ
今回の設定例だと特に使い道はありませんが、応用することで、以下のような例に発展させることが可能です。
- 指定した時間に特定サイトを確認して商品情報を一覧表示する
- 指定した時間にシート内の計算結果をメールやslackで連携する
- 月末に月締め処理を自動計算する
続けて、今回スプレッドシートで実行しましたが、シートが不要で定期的に実行したい場合にStand Alone形式で実行というやり方があるので紹介します。