更新周期性事件的所有(或子集)实例的正确方法是什么?还有关系:如果给出原始事件的id,你如何获得该事件的实例?
答案 0 :(得分:6)
如果只想更新周期性事件的子集,则需要在运行查询时设置singleevents = true以检索初始事件列表。在PHP中你会做这样的事情
$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin($startDate);
$query->setStartMax($endDate);
$query->setSingleEvents('true'); //get recurring events as a series of single events
$eventFeed = $gdataCal->getCalendarEventFeed($query);
foreach ($eventFeed as $event) {
//do stuff with $event
}
答案 1 :(得分:5)
我尝试更新所有重复事件,它正在工作。最初我创建了一个周期性事件,如2016年2月25日星期一到2016-03 25 25周年,并为该周期创建了6个实例。我试过了,
1.首先我指定了Recurrence字段, “重复”:[“RRULE:FREQ = WEEKLY; COUNT = 18; BYDAY = TU”](周二更新如周)
2.之后我使用list google api获取可用列表。我使用了Single Events:false(因为它只会给出主要的重复事件而不是所有实例)
3.之后我使用update事件更新,如通过auth,eventId和calendarId:“primary”和resource:updated event array
然后就完成了。它正在周二将实例更新为Weekly。
我希望它会对某人有所帮助。
答案 2 :(得分:3)
要更新所有内容,只需更改事件的相关属性,使重复和重复异常字符串保持不变。不确定您是否可以轻松修改子集,因为这需要根据子集将周期性事件转换为多个新事件。
对于第二部分或您的问题,根据API文档:
具体来说,每个重复发生的事件都是 由...代表 结果Feed中的元素,以及每个元素 这些要素包括一个 每次出现的元素 介于开始之间的事件 时间和结束时间。看着 元素要简单得多 比解析重现和 自己例外。
但是,我从来没有能够找到那种魔法“当”......所以我最终解析了重复和recurrenceexceptions字符串 - 如果你找到了那个的答案,让我们都知道!
答案 3 :(得分:3)
对于有这个问题的任何人,我也花了一些时间试图解决这个问题。基本上,当您获得CalendarEventEntry列表时,如果它具有originalEvent(calendarEventEntry.getOriginalEvent()),则需要检查每个calendarEventEntry。这基本上告诉您有另一个事件(您可能已经或可能没有处理过)需要与当前calendarEventEntry的信息交换。