如何通过Microsoft Graph API或PowerShell获取Outlook按天配置的工作时间?
关于获取Outlook按天自定义工作时间的解决方案
问题1:能否通过Microsoft Graph API或PowerShell获取按天工作时间?
目前(截至2024年),无法直接通过Microsoft Graph API的mailboxSettings端点或Exchange Online PowerShell的Get-MailboxCalendarConfiguration cmdlet获取按天自定义的工作时间。这两个工具仅能返回统一的工作日起止时间和工作日列表,无法体现不同日期的时间差异。
你当前调用的Graph API:
GET https://graph.microsoft.com/v1.0/me/mailboxSettings
返回的workingHours属性确实只包含全局的startTime和endTime,无法区分每天的设置。
问题2:替代方案
如果需要获取按天的工作时间配置,可以考虑以下几种方案:
- 基于日历事件解析:让用户在Outlook日历中创建每周重复的“工作时间”事件(设置为「工作中」或「忙碌」状态),然后通过Graph API的
/me/events端点查询这类事件,解析重复规则中的每日时间范围。查询时可通过过滤条件精准定位,比如:
解析返回的GET https://graph.microsoft.com/v1.0/me/events?$filter=subject eq '工作时间' and isRecurring eq truerecurrence和start/end字段即可得到每天的工作时间。 - 自定义存储系统:在企业场景下,可以搭建内部配置平台,让用户维护按天的工作时间,将数据存储在Azure AD扩展属性、SharePoint列表或企业数据库中,再通过对应的API读取配置。
- Exchange Web Services (EWS):尽管微软已推荐优先使用Graph API,但EWS的
GetUserAvailability操作仍可获取用户按天自定义的工作时间配置。不过需要注意EWS已进入维护阶段,未来可能不再更新。
内容的提问来源于stack exchange,提问作者CodeSeeker
相关产品推荐
相关产品推荐

