libro
www.tuyano.com
初心者のためのGoogle Apps Scriptプログラミング入門

スクリプトの実行とイベントハンドラ (4/5)

作成:2011-06-22 08:00
更新:2011-06-25 16:06

■タイマーイベントについて

Google Apps Scriptで利用できるイベントには、イベントハンドラーを利用するものの他にも、「タイマー」によるものが用意されています。これは、一定の時間ごとにスクリプトを実行するためのものです。

スクリプトエディタの<トリガー>メニューでスクリプトとイベントのトリガーを設定するダイアログを呼び出したとき、「イベント」という項目のポップアップメニューを見ると、「時間主導型」という項目が見えるはずです。これを選択すると、タイマーイベントのトリガーを設定することができます。

時間主導型」を選ぶと、その右側に2つのポップアップメニューが現れます。1つ目は、タイマーの単位を選ぶもので、「分タイマー」「時タイマー」「日タイマー」「週タイマー」の4項目が現れます。

ここから単位を選ぶと、その右側のメニューに呼び出し間隔の一覧が表示されます。例えば「分タイマー」を選ぶと、右側のメニューには「Every Hour」「1分ごと」「5分ごと」「10分ごと」「15分ごと」「30分ごと」といった項目が表示されます。ここで、例えば「1分ごと」を選べば、1分ごとに指定の関数を実行させることができるようになるわけです。

では、実際のサンプルを下のリスト欄に挙げておきましょう。このonEveryMinuteは、現在の日時をA1セルに出力するサンプルです。これを「分タイマー」「1分ごと」のトリガーに設定してみましょう。現在の日時が1分ごとに更新され表示されます。

このタイマーイベントでも、イベント情報を管理するオブジェクトが引数として渡されます。このオブジェクトも、先のイベントハンドラで渡されるものとはかなり内容が異なります。タイマーイベントで引数に渡されるオブジェクトに用意されているプロパティを以下に整理しておきましょう。

year――年の値
month――月の値
day-of-month――月の何日目か(通常の日の値)
day-of-week――週の何日目か(曜日の値)
hour――時の値
minute――分の値
second――秒の値

日の値は2種類あります。day-of-monthは「○月○日」というように「今月の何日目」という値で、day-of-weekは「今週の何日目(つまり、曜日のこと)」の値になります。day-of-weekでは、日曜~土曜を0~6の数字として得ることができます。

また、これら2つの他はそのままe.yearというようにプロパティとして指定し取り出すことができますが、day-of-monthday-of-weekは名前に-が含まれている関係で、e.day-of-monthという形ではうまく取り出せないようです。d["day-of-month"]と指定してください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function onEveryMinute(e){
	var y = e.year;
	var m = e.month;
	var d = e["day-of-month"];
	var h = e.hour;
	var mi = e.minute;
	var s = e.second;
	var msg = y + "/" + m + "/" + d + " " + h + ":" + mi + ":" + s;
	var sheet = SpreadsheetApp.getActiveSheet();
	sheet.getRange("A1").setValue(msg);
}

※関連コンテンツ

「初心者のためのGoogle Apps Scriptプログラミング入門」に戻る