我目前正在使用设置为true的“ singleEvents”参数列出Google日历中的所有事件,这可以将重复发生的事件拆分为单个事件-很好。但是,当编辑重复事件的实例,并且在日历UI中使用“仅此事件”选项保存所做的编辑时,我遇到了一个问题。
我需要做的是能够确定哪些重复发生的事件实例已被编辑,哪些尚未被编辑。似乎API响应数据没有提供任何指示,表明这是未编辑的重复事件的实例还是已编辑的一次性事件。对于重复事件的未编辑实例和已编辑实例的响应大致相同,保存描述字段已编辑。
之所以需要区分已编辑和未编辑的重复事件实例,是因为我正在从单个事件列表中动态创建事件详细信息页面。我希望有一个页面用于重复发生的事件本身,而另一个页面则用于该重复发生的事件的“一次性”。例如:
allmyevents.com/events/my-recurring-event->页面,显示带有重复信息的重复事件
allmyevents.com/events/my-recurring-event/16-4-2020->页面,显示定期事件的特定实例,该页面已被编辑
目前,我可以在与我要替换的重复发生的事件实例相同的日期和标题下创建一个全新的事件,并编写骇人的比较逻辑来判断这是否是替换事件,但这对于事件/内容管理是违反直觉的。
非常感谢任何人都能提供帮助。
您可以使用Calendar API Events: instances
端点返回重复事件的所有实例。自行编辑的所有事件均不会返回。
Calendar API的Events: instances
端点将为指定的Events: instances
和calendarId
返回重复事件的所有实例。已编辑的所有内容均将省略。
这是一种解决方法,因为无法直接获取这些事件,但是通过获取您已经在做的事件列表,然后删除由eventId
返回的事件,您可以建立所有使用“仅此事件”选项编辑过的事件的列表。
您可以执行以下操作:
Events: instances
返回的eventsList = Calendar.Events.List(calendarId, singleEvents=true)
eventsInstances = Calendar.Events.Instances(calendarId, recurringEventId)
singleEvents = eventsList
for each instance in eventsInstances :
if eventsList.items contains instance :
singleEvents.remove(instance)
return singleEvents
变量将是所有手动编辑的事件的列表。
希望对您有帮助!