更新Google Calendar重复事件UNTIL日期后实例全被取消问题求助
Google日历API更新重复事件UNTIL参数异常问题
我尝试通过Google日历API取消指定日期之后的所有重复事件,在更新recurrence属性设置新的UNTIL日期时出现异常:除一个实例外,所有重复事件(无论早于还是晚于新UNTIL日期)均被移除。
事件创建方式
通过events.insert()创建重复事件,请求负载如下:
{ calendarId: MY_CALENDAR_ID sendUpdates: 'none', resource: { start: { dateTime: <Some dateTime value> timeZone: MY_TIMEZONE }, end: { dateTime: <Some dateTime value> timeZone: MY_TIMEZONE }, recurrence: ['RRULE:FREQ=WEEKLY'], // 其他非关键参数 summary: "..." attendees: [{ email: email@email.com, responseStatus: 'accepted'}, ...] guestsCanInviteOthers: false, guestsCanModify: false, visibility: 'default', } }
取消未来重复实例的操作步骤
- 调用
events.get()获取事件详情,请求负载:
{ eventId: MY_EVENT_ID calendarId: MY_CALENDAR_ID }
其中MY_EVENT_ID是重复事件的某一个实例ID。
- 调用
events.update()更新主事件,请求负载:
{ calendarId: MY_CALENDAR_ID, eventId: retrievedEvent.data.recurringEventId, requestBody: { ...retrievedEvent.data, recurrence: ['RRULE:FREQ=WEEKLY;UNTIL=20250619T014535Z'] } }
预期与实际行为
- 预期行为:仅新UNTIL日期之后的重复实例被取消,之前的实例保留。
- 实际行为:所有重复实例均被取消,原本获取的
retrievedEvent被转换为非重复常规事件。
通过调用events.list()并设置showDeleted: true验证:所有重复实例(无论早于还是晚于新UNTIL日期)仍存在,但状态变为"status": "cancelled";仅retrievedEvent状态为"confirmed",且不再包含recurringEventId,说明已变为普通非重复事件。
内容的提问来源于stack exchange,提问作者Jeloz
相关产品推荐
相关产品推荐

