1

Microsoft Graph 日历 API中,我可以使用请求 url 获取所有事件:

/me/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}

但我必须指定开始和结束日期。有没有办法在不指定日期的情况下获取所有事件?

只是将日期排除在请求之外会给我一个错误,即它缺少这些参数。

4

1 回答 1

1

/calendarView端点旨在为您提供给定日期范围的日历的渲染视图。如果没有日期范围,API 将不得不渲染日历中的每个事件,可能要追溯到几十年前。这样做的计算成本可能过高,更不用说它会对大规模性能产生负面影响。

如果您只想要原始底层event对象,则可以使用/events端点。这将为您提供包含该日历中每个事件的分页结果。您将需要进行一些后期处理,以呈现基于主事件的重复事件的单个实例(即带有 的事件"eventType": "seriesMaster")。

一般来说,我建议使用它,/calendarView因为它会为您处理渲染系列实例。您可以通过将足够大的窗口传递给它来有效地模仿检索“所有内容”,尽管会影响性能。

为了说明,在Graph Explorer中调用以下 URI 会返回整整十年(2009-2019)的事件:

https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=2009-01-01&enddatetime=2019-12-31

值得注意的是,这需要 6,436 毫秒才能返回结果,并且数据仅包含少量事件。当我对我的日历运行相同的查询时,它花费了 13,883 毫秒。所以纯粹从性能的角度来看,我不建议一次定期查询超过 12 个月(即startdatetime=2018-01-01&enddatetime=2018-12-31花费 2795 毫秒)。

于 2019-04-08T15:31:38.143 回答