Google日历API未返回所有已取消的活动

时间:2010-06-29 21:13:14

标签: php google-calendar-api zend-gdata

我遇到了Google Calendar API的一个奇怪问题(通过PHP与Zend_Gdata。)在相关日历上我从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

这些中的每一个都无限期地重复,但在某些日子有例外。我的问题是在2010-07-15之后API没有返回任何已取消或修改的实例。在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);

结果Feed包含所有已删除的实例的所有5次重复和“已取消”事件对象,直到2010-07-15任意停止。我应该注意每次重复的getWhen()数组包含正确的时间(即它省略了取消的日期),但由于我的程序编码方式,重要的是我可以访问实际取消的事件对象。 / p>

什么可能导致API不返回所有已取消/修改的事件?最大结果不是问题,因为Feed中只有大约30个事件。我基本上没有想法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我确信这是日历API中的一个错误,我最终为它编写了一个解决方法。

我编写了代码来根据开始和重现数据计算事件的预期实例,然后将其与重复发生时when数组中的实例进行比较。当存在预期的实例但它从when数组中丢失时,它会创建已取消的事件对象。