如何通过Microsoft Graph获取指定时间段内的周期性日历事件实例
获取指定时间段日历事件(含周期性实例)的简便方案
直接使用Microsoft Graph的calendarView接口即可一步获取目标时间段内的所有日历事件实例,包括多年前创建的周期性会议的对应实例,无需先筛选系列主项再单独拉取实例。
核心调用方式
使用GET /users/{id | userPrincipalName}/calendar/calendarView接口,通过指定时间范围参数直接展开并返回所有符合条件的事件实例:
GET https://graph.microsoft.com/v1.0/users/{user-id}/calendar/calendarView?startDateTime={起始时间ISO格式}&endDateTime={结束时间ISO格式}
关键参数说明
startDateTime/endDateTime:必填,格式为ISO 8601(如2024-04-01T00:00:00Z表示UTC时间4月1日零点),对应你需要查询的时间段(比如过去两周的起始和结束时间)。$select:可选,用来指定需要返回的字段(如subject,start,end,isSeriesMaster),减少冗余数据返回。$top:可选,控制单次返回的事件数量,默认10条,最大可设为50,超出则需要通过@odata.nextLink分页获取。
优势对比
相比你之前先拉取所有事件、筛选系列主项再逐个调用实例接口的方式,calendarView直接完成了:
- 自动展开周期性事件的所有符合时间范围的实例
- 一次性返回所有单事件和周期性实例
- 无需额外多次请求,大幅提升效率
示例请求(过去两周)
假设当前是2024年4月14日,查询过去两周(4月1日-4月14日)的事件:
GET https://graph.microsoft.com/v1.0/users/john.doe@contoso.com/calendar/calendarView?startDateTime=2024-04-01T00:00:00Z&endDateTime=2024-04-14T23:59:59Z&$select=subject,start,end,isSeriesMaster
返回结果中,周期性事件的每个实例都会单独列出,isSeriesMaster字段为false;如果需要关联到系列主项,实例中会包含seriesMasterId字段,可用来获取主项信息(如果需要的话)。
内容的提问来源于stack exchange,提问作者Kate Shutova
相关产品推荐
相关产品推荐

