Google カレンダー API (Zend_Gdata を使用した PHP 経由) で奇妙な問題が発生しています。問題のカレンダーには、3 月から始まる定期的なイベントがいくつかあります。
- 2010-04-19 9:30 - 16:00
- 2010-04-20 10:00 - 15:30
- 2010-04-21 9:30 - 16:00
- 2010-04-22 10:00 - 15:30
- 2010-04-23 9:30 - 12:30
これらはそれぞれ無期限に繰り返されますが、一部の日に例外があります。私の問題は、キャンセルまたは変更されたインスタンスが の後に API によって返されないこと2010-07-15
です。8 月 2 日の週に、これらの 5 回の繰り返しはすべてキャンセルされ、Google カレンダーではそのように表示されますが、API はこれらの日の例外を返しません。
次のコードでカレンダーを照会しています。
$gc = new Zend_Gdata_Calendar($client);
$query = $gc->newEventQuery();
$query->setUser(/*calendar ID goes here*/);
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortorder('ascending');
$query->setMaxResults(500);
$query->setSingleEvents("false");
$query->setStartMin('2010-06-01 00:00:00');
$query->setStartMax('2010-09-20 00:00:00');
$query->setQuery(/*title of the events*/);
return $gc->getCalendarEventFeed($query);
結果のフィードには、5 回の繰り返しすべてと、削除されたすべてのインスタンスの「キャンセルされた」イベント オブジェクト2010-07-15
が、任意に停止するまで含まれます。各繰り返しの配列には正しい時刻が含まれていることに注意してくださいgetWhen()
(つまり、キャンセルされた日付が省略されています) が、プログラムのコーディング方法により、実際にキャンセルされたイベント オブジェクトにアクセスできることが重要です。
キャンセルまたは変更されたすべてのイベントを API が返さない原因は何ですか? フィードには約 30 のイベントしかないため、最大の結果が問題になることはありません。私は基本的にアイデアがありません。
前もって感謝します。