在Google Calendar API中更新定期活动的所有实例

时间:2009-12-31 16:39:17

标签: google-calendar-api

更新周期性事件的所有(或子集)实例的正确方法是什么?还有关系:如果给出原始事件的id,你如何获得该事件的实例?

4 个答案:

答案 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的信息交换。