如何通过Microsoft Outlook Calendar Graph API查找重复异常

时间:2018-07-23 17:46:13

标签: microsoft-graph outlook-restapi

我当前正在使用Microsoft Graph API将日历事件同步到本地应用程序。最后,我不在乎保存序列中的每个事件,而是宁愿只保存序列母版,然后自己推断出序列的实例。因此,我使用的是/ me / events调用,而不是/ me / calendarView调用。

我的问题是编辑系列中的单个事件。编辑单个事件后,我进行了/ me / events调用,可以看到新添加的“ Exception”类型-很棒。但是,我看不到如何将新事件与发生更改以导致异常的事件联系起来。

例如,如果我在星期一的每周中午开会,并且我将今天的会议从中午更改为2:00,那么很容易看出今天的会议是更改的会议。但是,如果我将今天的会议更改为星期五,该如何确定是今天的会议更改了,而不是下周的更改了?请记住,我仅存储主数据库,而不是存储每个CalendarView事件。

另一个例子是,如果我删除一个事件。在这种情况下,/ me / calendarView调用将不再返回该事件。没有生成异常类型。从/ me / events调用返回的系列主文件根本不会更改,以指示缺少日期。

我习惯的格式类似于iCal / vCal格式,其中有开始日期,结束日期,然后是例外日期列表。使用该格式,我可以轻松地从系列母版中看出要跳过的日期,而无需“呈现”整个事件并跳过异常。并且,如果删除了事件,则将其添加到EXDATE列表中,然后再在渲染时不考虑它。 Microsoft Graph API没有简单的方法来查看这些已更改/删除的事件吗?

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,但我想我现在已经意识到,Microsoft不允许重复发生的事件晚于下一个实例或早于前一个实例移动(至少在浏览器中使用Outlook日历时) 。因此,您始终可以假设第三事件是系列中的第三,第四事件是第四,依此类推。

只要知道序列号,就可以通过使用/ me / events / [event_id] / instances?startDateTime = [start_date_time]&endDateTime = [end_date_time]获取所有实例来找到它。

当我执行此操作时,Outlook日历中的错误不是很清楚,所以也许还有其他问题,但是我可以移动异常事件。不幸的是,由于事件可以在以后无限期地移动,因此我不确定是否有确定方法来知道使用哪种end_date_time。

答案 1 :(得分:-1)

基于来自标记为异常的事件的响应对象,您可以使用seriesMasterId将该异常与其上级重复发生相关联。