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

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

作成:2011-07-18 10:30
更新:2011-11-04 16:45

■イベントとCalendarEventについて

Calendarオブジェクトが取得できたら、次はその中の「イベント」について利用できるようにしましょう。

カレンダーの中に用意されている各種のイベントは、「CalendarEvent」というオブジェクトとして用意されています。これはCalendarから、各種のメソッドを使って取得することができます。これは、指定の日にちにあるイベントを得るものと、一定の範囲内にあるイベントを得るものがあります。

○指定の日のイベントを得る
変数 = 《Calendar》.getEventsForDay( 日にち );
変数 = 《Calendar》.getEventsForDay( 日にち , フィルター );

○指定の範囲のイベントを得る
変数 = 《Calendar》.getEvents( 開始日時 , 終了日時 );
変数 = 《Calendar》.getEvents( 開始日時 , 終了日時 , フィルター );

それぞれ、引数の日時はDateオブジェクトを使って指定します。また「フィルター」というのは、ゲストの参加に関するステータスを示すGuestStatusというオブジェクトを使ってフィルター処理をするものです。これはステータスに関する以下のようなプロパティを持ったオブジェクトです。

INVITED――返答待ち
MAYBE――未定
NO――いいえ
OWNER――オーナー
YES――はい

要するにゲストの参加状況に関するステータスを指定して絞り込みを行うためのものですね。これらの値を配列として引数に指定することでフィルター処理を行えます。

さて肝心のCalendarEventに目を向けましょう。この中には、イベントに関する各種の情報が保管されています。では、各項目ごとにメソッドを整理しましょう。

○イベントIDを得る
変数 =《CalendarEvent》.getId();

○タイトルに関するもの
変数 =《CalendarEvent》.getTitle();
《CalendarEvent》.setTitle( テキスト );

○説明文に関するもの
変数 =《CalendarEvent》.getDescription();
《CalendarEvent》.setDescription( テキスト );

○場所に関するもの
変数 =《CalendarEvent》.getLocation();
《CalendarEvent》.setLocation( テキスト );

○作成日時に関するもの
変数 =《CalendarEvent》.getDateCreated();

○終日イベントに関するもの
変数 =《CalendarEvent》.isAllDayEvent();
《CalendarEvent》.setAllDayEvent( 真偽値 );

○開始・終了日時に関するもの
変数 =《CalendarEvent》.getStartTime();
変数 =《CalendarEvent》.getEndTime();
《CalendarEvent》.setTime( 開始日時 , 終了日時 );

○公開に関するもの
変数 =《CalendarEvent》.getVisibility();
《CalendarEvent》.setVisibility( Visibility値 );

※Visibility値は、Visibilityオブジェクトにある以下のプロパティから指定。
CONFIDENTIAL DEFAULT PRIVATE PUBLIC

とりあえず、このぐらいが扱えるようになれば、イベントの主な操作は行えるようになるでしょう。――では、実際の利用例を以下にあげておきます。指定したカレンダーから今月のイベントを取得し、各イベントのタイトル、説明、開始日時、終了日時をアクティブシートに書き出します。CalendarApp.getCalendarByIdの引数には、それぞれのカレンダーのIDを指定しておいてください。

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

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

●プログラム・リスト●

function getCal(){
	var sheet = SpreadsheetApp.getActiveSheet();
	var cal = CalendarApp.getCalendarById( …カレンダーIDを指定… );
	var d1 = new Date();
	d1.setDate(1);
	d1.setHours(0);
	d1.setMinutes(0);
	d1.setSeconds(0);
	var d2 = new Date();
	d2.setDate(1);
	d2.setMonth(d2.getMonth() + 1);
	d2.setHours(0);
	d2.setMinutes(0);
	d2.setSeconds(0);
	Logger.log(d1);
	Logger.log(d2);
	var evts = cal.getEvents(d1,d2);
	var index = 1;
	if (evts.length > 0){
		for (var i in evts){
			var evt = evts[i];
			sheet.getRange(index, 1).setValue(evt.getTitle());
			sheet.getRange(index, 2).setValue(evt.getDescription());
			sheet.getRange(index, 3).setValue(evt.getStartTime());
			sheet.getRange(index, 4).setValue(evt.getEndTime());
			index++;
		}
	}
}

※関連コンテンツ

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