GoogleCalendarのカレンダー属性情報、イベント属性情報の取得方法まとめ

こんなカレンダーがあったとする。

  • 仕事
    • 4/1 15:00 客先訪問
    • 4/2 納品
  • プライベート
    • 4/3 13:00 花見
    • 4/4 19:00 飲み会

【仕事】、【プライベート】がカレンダー
その他がイベント情報とする。

カレンダー情報の取得

(GDataFeedCalendar *)feed からカレンダー情報を取り出す

以下のコードで「calendar」変数にカレンダー情報を一つずつセットしておく。

for (GDataEntryCalendar *calendar in [feed entries])
属性 取得方法 データ例
カレンダー名 [[calendar title] stringValue] NSString 仕事
説明 [calendar description] NSString カレンダーの説明
場所 [[calendar locations] description] NSString 東京
説明 [[calendar locations] description] NSString カレンダーの説明
カレンダーの表示色 [[calendar color] stringValueForAttribute:[colorProp attributeName]] NSString #2952A3
タイムゾーン [timezoneProp stringValueForAttribute:[timezoneProp attributeName]] NSString Asia/Tokyo
カレンダーへのURL [[calendar alternateLink] [link URL] NSURL

※【https://www.google.com/calendar/feeds/xxx/private/full
 xxxにカレンダー名が入る

イベント情報の取得

(GDataFeedCalendar *)feed からイベント情報を取り出す

以下のコードで「gDataEvent」変数にイベント情報をセットしておく。

for (GDataEntryCalendarEvent *gDataEvent in [feed entries])
属性 取得方法 データ例
カレンダー名 [[feed title] stringValue] NSString 仕事
イベント名 [[gDataEvent title] stringValue] NSString 客先訪問
説明 [[gDataEvent content] stringValue] NSString ○×会社訪問
更新日時 [[gDataEvent updatedDate] date] NSDate 2012-04-01 11:10:20 +0000
場所 [[[gDataEvent locations] objectAtIndex:0] stringValue] NSString 東京

時間データを取得するには、まずこれをやってから
GDataWhen *when = [[gDataEvent times] objectAtIndex:0];

属性 取得方法 データ例
開始時間 [[when startTime] date] NSDate 2012-04-01 15:00:00 +0000
終了時間 [[when endTime] date] NSDate 2012-04-01 16:00:00 +0000

「終日」(時間指定なし)であるかどうかは、「hasTime」の結果で判断できる

終日の場合は、hasTimeがFalseになる

if ( !([[when startTime] hasTime]) && !([[when endTime] hasTime]) ) {
    // 開始時間、終了時間ともに時間指定がないため、「終日」である
}

他にも属性があるが、必要な情報はこんな感じ。

これらのプロジェクトファイル一式はここ。
yuriken27/GoogleCalendarAccessTest · GitHub