読者です 読者をやめる 読者になる 読者になる

google calendarに終日イベントを追加する

基本的に他の人のソースのパクリ。

package sample.calendar;

import java.net.URL;

import com.google.gdata.client.calendar.CalendarService;
import com.google.gdata.data.DateTime;
import com.google.gdata.data.PlainTextConstruct;
import com.google.gdata.data.calendar.CalendarEventEntry;
import com.google.gdata.data.extensions.When;

public class AllDayEventCreator {

	// Google アカウント
	private static String GOOGLE_ACCOUNT = "xxxxxxxxxx@gmail.com";
	// Google アカウントのパスワード
	private static String GOOGLE_PASSWORD = "xxxxxxxxxx";
	// 送信URL
	private static String GOOGLE_CAL_URL = "http://www.google.com/calendar/feeds/default/private/full";

	/**
	 * 終日のイベントを追加します。
	 * 
	 * @throws Exception
	 */
	public void insertAlldayData() throws Exception {

		URL postURL = new URL(GOOGLE_CAL_URL);

		// イベント登録クラス
		CalendarEventEntry calEntry = new CalendarEventEntry();
		// タイトルを設定
		calEntry.setTitle(new PlainTextConstruct("終日のテスト"));
		// 詳細を設定
		calEntry.setContent(new PlainTextConstruct("詳細のサンプル"));

		DateTime startTime = new DateTime();
		startTime.setTzShift(9);
		startTime = DateTime.parseDate("2009-11-27");

		// 開始終了日時をWhen型オブジェクトに代入し、イベントクラスに追加
		When eventTimes = new When();
		eventTimes.setStartTime(startTime);
		calEntry.addTime(eventTimes);

		// Google Calendarサービスに接続
		CalendarService calService = new CalendarService(
				"chaos-alldaySample-0.1");
		calService.setUserCredentials(GOOGLE_ACCOUNT, GOOGLE_PASSWORD);

		// スケジュールを追加する
		calService.insert(postURL, calEntry);
		System.out.println("終日の予定:「" + calEntry.getTitle().getPlainText()
				+ "」を追加しました。");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		try {
			// インスタンス生成
			AllDayEventCreator main = new AllDayEventCreator();
			// 終日イベントを追加
			main.insertAlldayData();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

終日イベントはsetStartTimeに渡すDateTimeを作成するときに、
DateTime.parseDate("2009-11-27");
のように、parseDateを使い、時分秒を指定しないとできる(みたい)。