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

Googleカレンダーにアクセスする (5/5)

作成:2011-07-18 10:38
更新:2011-11-04 16:48

■繰り返しイベントとRecurrence

さて、通常のイベントはこのように簡単に作れるのですが、そう簡単にはいかないものもあります。それが「繰り返しイベント」です。

Googleカレンダーでは、イベント作成時に「繰り返し」のチェックをONにすることで、何度も繰り返すイベントを作れます。これは、毎日繰り返したり、毎週同じ曜日に繰り返したり、決まった回数だけ繰り返したり、エンドレスで繰り返したりと、非常に複雑な設定が行えます。

まずは、繰り返しイベントを作成するメソッドを整理しておきましょう。これはCalendarに用意されています。

○時間指定された繰り返しイベント作成
変数 =《Calendar》.createEventSeries( タイトル, 開始日時,
    終了日時, 繰り返し設定 );
変数 =《Calendar》.createEventSeries( タイトル, 開始日時,
    終了日時, 繰り返し設定, オプション );

○終日繰り返しイベント作成
変数 =《Calendar》.createAllDayEventSeries( タイトル, 日にち,
    繰り返し設定 );
変数 =《Calendar》.createAllDayEventSeries( タイトル, 日にち,
    繰り返し設定, オプション );

これらは、基本的に普通のイベントを作成するcreateEvent/createAllDayEventと同じです。ただ1つ、「繰り返し設定」の引数が追加している点を除けば、です。この繰り返し設定の値は、「Recurrence」というオブジェクトとして用意されます。このRecurrenceが、繰り返しイベントの最大のポイントです。ここに、繰り返しに関するさまざまな設定を組み込むのです。

○指定した日付の追加・削除
変数 =《Recurrence》.addDate( 日付 );
変数 =《Recurrence》.addDateExclusion( 日付 );
日付を指定して追加・削除するものです。引数にはDateオブジェクトを指定します。

○毎日の繰り返し設定の追加・削除
変数 =《Recurrence》.addDailyRule();
変数 =《Recurrence》.addDailyExclusion();

○毎週の繰り返し設定の追加・削除
変数 =《Recurrence》.addWeeklyRule();
変数 =《Recurrence》.addWeeklyExclusion();

○毎月の繰り返し設定の追加・削除
変数 =《Recurrence》.addMonthlyRule();
変数 =《Recurrence》.addMonthlyExclusion();

○毎年の繰り返し設定の追加・削除
変数 =《Recurrence》.addYearlyRule();
変数 =《Recurrence》.addYearlyExclusion();
一定間隔で繰り返すための設定を追加します。addDailyRuleは繰り返しを追加するもの、addDailyExclusionは繰り返しを削除するものです。それぞれ、後述のtimesuntilメソッドを使って繰り返しの回数や終了日を指定できます。

○回数を設定する
変数 =《Recurrence》.times( 回数 );

○終了日を設定する
変数 =《Recurrence》.until( 日にち );

○繰り返しの間隔を設定する
変数 =《Recurrence》.interval( 間隔 );
繰り返し設定を追加・削除したとき、その繰り返しをどれだけ行うかをこれらのメソッドで設定します。例えば、こんな感じになります。

10日の間、毎日イベントを設定する
《Recurrence》.addDailyRule().times(10);

2020年のクリスマスまで毎週繰り返しを続ける
《Recurrence》.addWeeklyRule().until(new Date(2020,11,24));
また、addWeeklyRuleの場合、「何曜日から開始するか」を指定する必要があります。これは以下のようになります。

○開始曜日を指定する
変数 =《Recurrence》.weekStartsOn( 曜日 );
※曜日はWeekdayオブジェクトの以下のプロパティで指定する
SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY
このRecurrenceを使った繰り返しイベントは、けっこう細かなメソッドの働きを理解しておかないとうまく使いこなせません。簡単なサンプルを下にあげておきましょう。先ほどのサンプルの修正版で、実行するとアクティブシートにダイアログが現れます。ここでイベント名を入力すると、今から1時間のイベントを、来月から10ヶ月先まで毎月の今日に設定します。

ここでは、newRecurrenceRecurrenceを作成した後、addMonthlyRule().times(10)で10回の繰り返しを追加してから、addMonthlyExclusion().times(1)で1回分(つまり今月の分)を削除しています。こんな具合に「繰り返しの設定を追加してから、不要な分を削除する」というようにして必要なものだけ組み込んでいくわけですね。

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

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

●プログラム・リスト●

function createCalEvent(){
	var sheet = SpreadsheetApp.getActiveSheet();
	var str = Browser.inputBox("イベントのテキスト:");
	var calName = "MySampleCal";
	var cals = CalendarApp.getCalendarsByName(calName);
	var cal = null;
	if (cals.length == 0){
		cal = CalendarApp.createCalendar(calName);
	} else {
		cal = cals[0];
	}
	var d1 = new Date();
	var d2 = new Date();
	d2.setHours(d2.getHours() + 1);
	var rec = CalendarApp.newRecurrence();
	rec.addMonthlyRule().times(10);
	rec.addMonthlyExclusion().times(1);
	cal.createEventSeries(str, d1, d2, rec);
}
※関連コンテンツ

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