如何检查日历事件是异常还是实例

时间:2019-01-08 10:16:29

标签: google-api google-calendar-api

我在我的应用程序中使用Google Calendar API进行重复发生的事件(创建,更新和删除操作),但是我无法找到重复发生的事件是instance event还是exception event

2 个答案:

答案 0 :(得分:0)

  

创建重复事件类似于创建具有事件资源的重复字段设置的常规(单个)事件。

POST /calendar/v3/calendars/primary/events
...

{
  "summary": "Appointment",
  "location": "Somewhere",
  "start": {
    "dateTime": "2011-06-03T10:00:00.000-07:00",
    "timeZone": "America/Los_Angeles"
  },
  "end": {
    "dateTime": "2011-06-03T10:25:00.000-07:00",
    "timeZone": "America/Los_Angeles"
  },
  "recurrence": [
    "RRULE:FREQ=WEEKLY;UNTIL=20110701T170000Z",
  ],
  "attendees": [
    {
      "email": "attendeeEmail",
      # Other attendee's data...
    },
    # ...
  ],
}

要查看给定重复事件的所有实例,可以使用events.instances()请求。

默认情况下,events.list()请求仅返回单个事件,重复发生的事件和异常;不是异常的实例不会返回。如果设置了singleEvents参数,则所有单个实例的确会出现在结果中,但不会出现在基础周期性事件中。

有关更多信息,请参见recurringevents

答案 1 :(得分:0)

不幸的是,无法识别实例是否是重复事件的例外。唯一的解决方法是将实例与主事件进行比较或使用可以唯一标识实例的originalStartTime(可以将originalStartTime与起始对象date / dateTime进行比较,但是如果更改了summary或​​其他文本字段,此操作将失败)

我处理此问题的方法是使用nextSyncToken发出增量更改请求。如果发生异常,则实例将在从列表调用返回的有效负载中。我检查该实例是否具有与之关联的recurringEventId属性,如果存在,我知道该实例是一个例外。

将极力主张Google包含类似于Microsoft Graph的系统,该系统利用可标识事件是实例还是异常的属性。

来源:https://developers.google.com/calendar/recurringevents