gdata-objectivec-clientを使ってGoogleカレンダーにアクセスする方法をまとめます。
カレンダーを取得する
// サービス初期化 GDataServiceGoogleCalendar *service = [[GDataServiceGoogleCalendar alloc] init]; // アカウント設定 [service setUserCredentialsWithUsername:@"Username" password:@"Password"]; // 全てのカレンダーを取得するURL NSURL *feedURL = [NSURL URLWithString:kGDataGoogleCalendarDefaultAllCalendarsFeed]; // サービスからフェッチする [service fetchFeedWithURL:feedURL delegate:self didFinishSelector:@selector(ticket:finishedWithFeed:error:)];
カレンダー取得後のイベントハンドリング
- (void)ticket:(GDataServiceTicket *)ticket
finishedWithFeed:(GDataFeedCalendar *)feed
error:(NSError *)error {
if (error == nil) {
NSArray *entries = [feed entries];
if ([entries count] > 0) {
// 最初のカレンダー
GDataEntryCalendar *firstCalendar = [entries objectAtIndex:0];
// カレンダーの名前
GDataTextConstruct *titleTextConstruct = [firstCalendar title];
NSString *title = [titleTextConstruct stringValue];
// カレンダーの色
NSString *color = [[firstCalendar color] stringValue];
// カレンダーのURL
NSURL *url = [[firstCalendar alternateLink] URL];
NSLog(@"first calendar's title: %@", title);
} else {
NSLog(@"the user has no calendars")
}
} else {
NSLog(@"fetch error: %@", error);
}
}
イベントの取得
// 取得するイベントの最大日時 NSCalendar *nsCalendar = [NSCalendar currentCalendar]; NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease]; [comps setDay:365]; // 365日後 NSDate *maxDate = [nsCalendar dateByAddingComponents:comps toDate:[NSDate date] options:0]; // タイムゾーン NSTimeZone *tz = [NSTimeZone localTimeZone]; NSURL *calendarURL = url; // カレンダーから取得したalternateLink // 検索クエリ GDataQueryCalendar *query = [GDataQueryCalendar calendarQueryWithFeedURL:calendarURL]; NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a" forKey:@"sortorder"]; [query setCustomParameters:dict]; // 開始日は今日〜365日後までの範囲 [query setMinimumStartTime:[GDataDateTime dateTimeWithDate:[NSDate date] timeZone:tz]]; [query setMaximumStartTime:[GDataDateTime dateTimeWithDate:maxDate timeZone:tz]]; // 8件取得 [query setMaxResults:8]; // 開始日でソート [query setOrderBy:@"starttime"]; // 繰り返し予定をひとつのイベントとして扱う [query setShouldExpandRecurrentEvents:YES]; [service fetchFeedWithQuery:query delegate:self didFinishSelector:@selector(eventListTicket:finishedWithFeed:error:)];
イベント取得後のイベントハンドリング
- (void)eventListTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedCalendarEvent *)feed error:(NSError *)error
{
if (error == nil) {
for ( GDataEntryCalendarEvent *event in [feed entries]) {
// イベント名
NSString *eventTitle = [[event title] stringValue];
// イベント日時
NSArray *eventTimes = [event times];
GDataWhen *when = [eventTimes objectAtIndex:0];
NSDate *startDateTime = [[when startTime] date];
NSDate *endDateTime = [[when endTime] date];
BOOL *hasTime = [][when startTime] hasTime];
}
}
}
このエントリーに対するコメント
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
- トラックバック
-
- google calendarとの同期2011/08/13, 2:12 AM
[…] 4.データの取得方法 データ取得はKrayさんの記事が非常に参考になります。 4.データの書き込み 1)カレンダーの追加 – […]















「いいね!」で応援よろしくお願いします!