Microsoft Graph API CalendarView限制为一个月?我如何获得所有活动?有一些隐式分页吗?
我首先检查 2017-01-01
和 2018-12-30
之间的事件的JSON输出:
https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime=2017-01-01T00:00:00.0000000&endDateTime=2018-12-30T00:00:00.0000000
并列出日期
jq '.value[] .start .dateTime'
"2017-11-22T13:30:00.0000000"
"2017-11-23T14:00:00.0000000"
"2017-11-24T14:00:00.0000000"
"2017-11-27T10:00:00.0000000"
"2017-11-27T10:00:00.0000000"
"2017-11-27T11:00:00.0000000"
"2017-11-27T14:30:00.0000000"
"2017-11-28T09:00:00.0000000"
"2017-11-29T09:00:00.0000000"
"2017-11-29T14:00:00.0000000"
例如,2017年第12个月中没有日历事件!但是我有它们!
,然后通过缩小 2017-12-01
和 2018-12-30
之间的范围缩小日期的左端来进行类似的呼吁,现在我得到了:
"2017-12-01T12:30:00.0000000"
"2017-12-01T14:00:00.0000000"
"2017-12-04T08:30:00.0000000"
"2017-12-04T12:00:00.0000000"
"2017-12-06T09:00:00.0000000"
"2017-12-06T10:00:00.0000000"
"2017-12-07T13:00:00.0000000"
"2017-12-13T09:00:00.0000000"
"2017-12-13T09:00:00.0000000"
"2017-12-13T13:00:00.0000000"
我被List CalendArview和List Events文档所困惑。
我如何在日历中获得所有事件,这些事件我可以清楚地看到在2017年11月和12月以及2018年1月和2018年2月>?/p>
我是否必须在一年中每个月反复打电话给此API?(我希望我可以打一个电话,以在一年或两年内完成所有事件,之后我可以过滤,处理等(
列表事件与列表calendarview
之间的区别当您列出事件(GET /me/events
(时,您将获得非扩展日历中的项目列表。这意味着,如果您有重复发生的事件,则只会在结果中获得系列主人。您可以阅读复发模式并扩展事件。
当您列出日历视图(GET /me/calendarview?...
(时,您将获得扩展的项目列表。这意味着服务器可以进行工作以扩展任何重复事件并构建日历的"视图"。因此,在这种情况下,如果您有一个经常性的事件,而不是获得系列主人,则会获得该系列的一个或多个出现(取决于在查看窗口中重复的次数(。由于这项扩展工作,您必须提供一个开始和结束时间,以将某种界限放在呼叫上。
另一种查看它的方式是日历视图更像是您在Outlook中查看日历时所看到的。
那么我所有的活动在哪里?
我不知道日历视图的窗口大小的任何特定限制。(并不是说没有一个,我只是不知道(。更有可能的解释是,您没有看到您期望的所有事件,因为返回集合的所有API请求确实具有内置的分页。默认情况下,您在响应中仅限10个项目。您还应该在响应中看到@odata.nextLink
,即您可以使用的URL请求结果的下一页(同样,10是默认页面大小(。您可以使用$top
参数增加页面大小,最多可达1000(IIRC(。
GET /me/calendar/calendarView?startDateTime=2017-01-01T00:00:00.0000000
&endDateTime=2018-12-30T00:00:00.0000000&$top=1000