如何通过Microsoft Graph API获取Outlook子日历的忙闲时段?
解决Microsoft Graph Get Free/Busy API获取子日历忙闲时段的问题
要获取主日历以外的子日历(如美国节假日、生日、测试日历等)的忙闲时段,你需要在API请求中显式指定目标子日历的ID,具体操作步骤如下:
获取所有日历的ID
先调用日历列表API,获取目标用户名下所有日历的ID,包括各类子日历:GET /me/calendars # 若针对特定用户,使用此端点 GET /users/{user-id}/calendars响应中每个日历对象会包含
id字段,你可以从中筛选出需要的子日历(如美国节假日、生日日历等)对应的ID。调用Get Free/Busy API时指定日历ID
在发起getSchedule请求时,在请求体的scheduleInformation数组中,为目标用户添加calendarIds参数,将主日历和需要的子日历ID全部包含进去。示例请求体如下:{ "schedules": ["user@example.com"], "startTime": { "dateTime": "2024-05-01T00:00:00", "timeZone": "Pacific Standard Time" }, "endTime": { "dateTime": "2024-05-07T00:00:00", "timeZone": "Pacific Standard Time" }, "availabilityViewInterval": 60, "scheduleInformation": [ { "userId": "user@example.com", "calendarIds": [ "主日历ID", "美国节假日日历ID", "生日日历ID", "测试日历ID" ] } ] }配置后API会返回所有指定日历的忙闲时段信息,而非仅主日历数据。
权限说明
确保你的应用已获得Calendars.Read权限(可根据使用场景选择委托权限或应用权限),否则无法访问用户的日历列表及忙闲信息。
注意:若不指定
calendarIds参数,API默认仅返回用户主日历的忙闲数据,这也是你之前仅获取到主日历结果的原因。
内容的提问来源于stack exchange,提问作者Muhammad Shehryar
相关产品推荐
相关产品推荐

