Contents
はじめに
Google Apps Scriptで書いた処理を、定時で実行する方法を記載します。
Googleアカウントがあれば、無料で作成できますし、
エラーが生じた際の通知もGmailで受け取れるため、便利です。
定期実行させたい処理を作成
GASで動くものなら、なんでもいいのですが、
わかりやすくするため、今回はスプレッドシートに実行時の日付が記録される処理を作成します。
スプレッドシート作成・設定
下記のように、スプレッドシートを開き、「日付」とだけ、セルに入力します。
このセルの下に、実行されると時間が記録されていく処理を作成します。
また、画像にうつってないですが、
画面下部に表示されるシート名を「sheet1」に変更してください。
事前に、実行時間が記録される予定のセルの表示形式を時間まで表示されるものに変更しておきます。
デフォルトのままだと、記録した際に、年/月/日までしか表示されず、わかりにくいからです。
次に、メニューから、ツール>スクリプトエディタをクリックします。
処理作成
処理を記述できる画面へと移動します。
デフォルトで、中身のないmyFunctionという名前のfunctionが定義されています。
何でも大丈夫ですが、この処理名を「定期実行」とし、
下記のような処理を記述しました。
※3つめのブロックのgetSheetByName(“sheet1”)で書かれているsheet1というのは、
スプレッドシートの対象のシート名なので、sheet1にしていない場合は、
自分の作成したものに合わせてください。
コピー用
function myFunction() {
// プログラム実行日取得
var today = new Date();
// プログラム実行日から、時間を取得
var time = Utilities.formatDate( today, 'Asia/Tokyo', 'yyyyMMdd: hhmmss');
// 対象のシートを取得
sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
// データが含まれる最終行 + 1行目を取得
var startRow = sheet.getLastRow() + 1;
// B列目の最終行 + 1に、時間をセット
sheet.getRange('B'+ startRow).setValue(today);
}
処理の動作確認・認証
ちゃんと動くか試すため、上の三角ボタンをクリックし、実行してみます。
すると、下記のようなウィンドウが表示されます。
これは、作成した処理がデータにアクセスする権限を求めていることを示しています。
「許可を確認」をクリックしてください。
そして、次に表示されたウィンドウで、gmailアカウントを選択します。
この際、会社などのG Suiteのアカウント(有料アカウント)を選択した場合、
指示に従って、許可をすればいいのですが、
無料のgmailアカウントの場合、
下記のように「このアプリは確認されていません」という警告がでてきます。
左下の詳細をクリックします。
すると、詳細内容が表示されるので、
警告がこわいですが、今回は、自分で作成したものなので、
無題のプロジェクト(安全ではないページ)に移動をクリックします。
そうすると、下記の画面に移動するので、
内容を確認し、許可をクリックします。(赤く潰した部分にアカウントが表示されます。)
ここまで行うと、作成した処理が実行できるようになっているはずなので、動きを確認してください。
スプレッドシートの日付というセルの下に実行時間が入力されるかと思います。
定期実行させる
それでは、この作成した処理を定期実行させます。
トリガーの作成
定期実行させたい処理を記述した画面で、
メニュー>編集>現在のプロジェクトのトリガー をクリックします。
そうすると、下記のGoogle Apps Scriptを管理する画面に遷移します。
今、開かれたページは、作成した「定期実行」処理に紐付くページとなります。
ここで、トリガー(この処理を発動する仕組み)を設定していきます。
右下の「トリガーを追加」をクリックしてください。
下記の画面が表示されます。トリガーを設定していきます。
実行する関数:今回は1つしか定義してないので、myFunctionです。
実行するデプロイを選択:今回はHead、つまり最新のバージョンを実行させます。今回は、関係ありませんが、処理をバージョン管理することができ、本番運用中に試しに実行しい場合などは、実行したいバージョンを選択します。
イベントのソースを選択:ここで、何起因で実行させるかを選ぶことができます。クリックします。
すると、3つの選択肢が表示されます。
今回は、時間で定期実行させたいので、時間主導型を選択します。
時間ベースのトリガーのタイプを選択という項目が表示され、
選択肢を見てみると、下記の画像のようになります。
例えば、5分毎に実行させたいのであれば、分ベース
毎日特定の時間帯に実行させたいのであれば、日付ベースとなります。
今回は、動きを確認するため、最小の分ベースのタイマーを選択します。
次に、その下の項目内容が変わると思うので、
何分おきに実行するか選択します。
今回は、1分おきを選択します。
エラー通知設定については、自由に設定して大丈夫です。
今回は、デフォルトの状態から変更しません。
保存をクリックします。
保存が終了すると、下記のように
Google Apps Scriptの管理画面に戻ってきます。
「定期実行」処理にトリガーが設定されたことが確認できます。設定を編集したい場合は、右端の方のえんぴつマークから行えます。
定期実行の動作確認
ここまでの設定で、すでに定期実行が設定完了しています。
下記のようにスプレッドシートに戻ってみてください。
1分ごとに、定期実行され、その時間が記録されていっているかと思います。
スプレッドシートは、更新せずに変更が適用されるので、
自動的に記入されていくのが確認でき、おもしろいです。
処理の統計情報
先ほど、トリガーを設定したGoogle Apps Scriptの管理画面で、
定期実行も含めた実行回数などを確認することができます。
下記の画面から、「定期実行>トリガー」と
大きく書かれている箇所の「定期実行」をクリックします。
下記のような画面が表示され、確認できます。