2011年7月30日土曜日

JavaからGoogleカレンダー登録

JavaからGoogleカレンダー登録のメモ

1. http://code.google.com/apis/gdata/client-java.html から Download the Java client library.」をクリックして「gdata-src.java-1.45.0.zip」を取得。解凍し適当なところへ保存。

2.http://code.google.com/p/google-collections/downloads/list より「google-collect-1.0.zip」をダウンロード。。解凍し適当なところへ保存。

3.Eclipseを起動し
プロジェクト名:GoogleCal(なんでもOK)
プロジェクトを右クリック⇒ビルド・パス⇒外部アーカイブの追加から
[1.より]
・gdata-calendar-2.0.jar
・gdata-core-1.0.jar
・gdata-client-1.0.jar
[2.より]
・google-collect-1.0.jar
を追加

新規クラスを作成「GoogleCalMain.java」を作成

############以下ソース##################

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import com.google.gdata.client.Query;
import com.google.gdata.client.calendar.CalendarService;
import com.google.gdata.data.DateTime;
import com.google.gdata.data.Entry;
import com.google.gdata.data.Feed;
import com.google.gdata.data.Person;
import com.google.gdata.data.PlainTextConstruct;
import com.google.gdata.data.calendar.CalendarEventEntry;
import com.google.gdata.data.extensions.EventEntry;
import com.google.gdata.data.extensions.When;
import com.google.gdata.data.extensions.Where;
import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;

/**
*
* GoogleCalendar APIで実行
* @version 1.0.0
*/
public class GoogleCalMain {

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

/**
* Google カレンダーAPIを使用して、登録と参照
* @param args
*/
public static void main(String[] args) {

GoogleCalMain main = new GoogleCalMain();
main.googleCalAddAndRef();

}

/**
* Google カレンダーAPIを使用して、
* 登録と登録したデータの参照を行います。
  *ここを変更し、カレンダに書き込む内容を指定します。
*/
private void googleCalAddAndRef() {

String title = "javaからの登録";

String place = "静岡";

String memo = "テスト";

try {
URL postURL = new URL(GOOGLE_CAL_URL);

// イベント登録クラス
CalendarEventEntry myEntry = new CalendarEventEntry();
// スケジュールのタイトル
myEntry.setTitle(new PlainTextConstruct(title));
// スケジュールの詳細
myEntry.setContent(new PlainTextConstruct(memo));
// 作成アプリ名
Person author = new Person("Mashup Sample Test", null, GOOGLE_ACCOUNT);

myEntry.getAuthors().add(author);

DateTime startTime = new DateTime();
startTime.setTzShift(9);
startTime = DateTime.parseDateTime("2011-07-30T08:00:00");//スケジュール開始を指定

DateTime endTime = new DateTime();
endTime.setTzShift(9);
endTime = DateTime.parseDateTime("2011-07-30T17:00:00");//スケジュール終了を指定

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

// 場所をWhere型オブジェクトに代入し、イベントクラスに追加
Where evLocation = new Where();
evLocation.setValueString(place);
myEntry.addLocation(evLocation);

// Google Calendarサービスに接続
CalendarService calService = new CalendarService("Sangi_Ricoh");//これは何?
calService.setUserCredentials(GOOGLE_ACCOUNT, GOOGLE_PASSWORD);

// スケジュールを追加する
CalendarEventEntry insertEntry = calService.insert(postURL, myEntry);

// 特定のスケジュールを操作するリクエストを取得
URL entryUrl = new URL(insertEntry.getSelfLink().getHref());
EventEntry retrievedEntry = calService.getEntry(entryUrl, EventEntry.class);

// 特定のスケジュールを探す
Query myQuery = new Query(postURL);
myQuery.setFullTextQuery(title);
Feed myResultsFeed = calService.query(myQuery, Feed.class);
if (myResultsFeed.getEntries().size() >= 0) {
Entry firstMatchEntry = myResultsFeed.getEntries().get(0);
System.out.println("Titie: " + firstMatchEntry.getTitle().getPlainText());
}

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (AuthenticationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
}


カレンダをみるとスケジュールが追加されています。

参考:
http://d.hatena.ne.jp/jawssame7/20091009/1255064509
http://simultechnology.blendmix.jp/blog/archives/495

0 件のコメント:

コメントを投稿