Microsoft Graph API getSchedule未返回全天事件,如何获取团队休假日程?
解决Microsoft Graph API getSchedule不返回全天OOF事件的问题
可能的原因及解决方案
1. 调整getSchedule请求参数
默认情况下,getSchedule可能因为以下原因遗漏全天OOF事件:
- 时间范围未覆盖UTC时段:全天事件在Graph中以UTC时间存储,本地时间的全天事件会跨UTC日期(比如本地2024-05-01的全天事件对应UTC的2024-04-30T23:00:00Z到2024-05-01T23:00:00Z)。如果你的请求时间范围只包含本地日期的UTC时段,会漏掉跨天的部分。
- 私有事件被过滤:若休假事件标记为私有,默认不会返回,需显式开启
includePrivate参数。
调整后的请求示例:
POST /me/calendar/getSchedule Content-Type: application/json { "schedules": ["member1@yourdomain.com", "member2@yourdomain.com"], "startTime": { "dateTime": "2024-04-30T00:00:00", "timeZone": "UTC" }, "endTime": { "dateTime": "2024-05-08T00:00:00", "timeZone": "UTC" }, "availabilityViewInterval": 60, "includePrivate": true }
2. 改用日历事件查询API
如果getSchedule仍无法满足需求,推荐直接调用用户日历事件API,通过筛选条件精准获取全天OOF事件:
请求示例(单用户):
GET /users/{user-id}/calendar/events?$filter=isAllDay eq true and showAs eq 'oof'&$select=subject,start,end,isAllDay,showAs
批量查询多个用户时,可以循环调用该接口,或使用批量请求提高效率。此方法能直接拿到所有符合条件的全天休假事件,无需依赖getSchedule的可用性聚合逻辑。
内容的提问来源于stack exchange,提问作者mevens
相关产品推荐
相关产品推荐

