Microsoft Graph SDK无法获取Outlook事件草稿/发送状态的技术咨询
判断Outlook事件是否为草稿(用户是否实际保存/发送)
针对你遇到的新版Outlook中,插件添加扩展属性后事件自动存草稿并触发通知,但无法通过Graph SDK区分草稿和已保存事件的问题,有几个可靠的方法来判断:
核心判断:检查
IsDraft属性
Graph API的Event实体自带isDraft布尔属性,这是最直接的标识:- 当事件是草稿状态(比如插件触发自动保存后),
isDraft为true - 当用户点击保存或发送按钮后,Outlook会将该属性更新为
false
- 当事件是草稿状态(比如插件触发自动保存后),
辅助验证:结合
Status属性
可以搭配status字段做辅助判断:- 草稿状态的事件,
status通常为"tentative" - 已保存/发送的事件,
status会根据用户操作变为"confirmed"(已确认)等状态,但isDraft依然是最可靠的判断标准
- 草稿状态的事件,
修改Graph SDK请求,确保获取所需属性
你的现有代码只扩展了自定义属性,建议显式指定获取IsDraft和Status字段(默认可能返回,但显式选择更保险):
graphEvent = await graphServiceClient .Users[eventData?.CalendarEmailId] .Events[eventData?.Id] .Request() .Select("Id,IsDraft,Status") // 显式选择需要的字段 .Expand($"SingleValueExtendedProperties({_extendedPropertyFilter})") .GetAsync();
- 使用示例
获取事件后,通过以下逻辑判断:
if (graphEvent.IsDraft) { // 该事件是草稿,用户尚未实际保存或发送 } else { // 用户已完成保存/发送操作,事件为最终状态 }
需要注意的是,这个逻辑仅适用于新版Outlook模式下的场景,符合你描述的前置条件。
内容的提问来源于stack exchange,提问作者Nitin Kt
相关产品推荐
相关产品推荐

