Outlook Web插件:如何获取Web与桌面端通用的约会ID
解决Outlook Web与桌面插件通用约会识别ID的方案
一、直接转换EWS ID为MAPI Entry ID
你可以用Office.js提供的convertId方法,把Web端拿到的EWS格式ID转换成桌面端需要的MAPI Entry ID,步骤如下:
- 调用
Office.context.mailbox.convertId,传入Web端获取的itemId,指定源类型为Office.MailboxEnums.ItemIdType.EwsId,目标类型为Office.MailboxEnums.ItemIdType.EntryId。 - 示例代码:
Office.context.mailbox.convertId( "AAMkADYwNGJjODU4LWViMDgtTIFhZS04ZTE3LThiNzI5OTMwNkgyMwBGAAAAAAC5oTj3DmbxQrZMZ6MYr9cgBwBaduq66V0XT7lheOKO9SroAAAAAAENAABaduq66V1XT7lheOKO9SroAAACZbfrAAA=", Office.MailboxEnums.ItemIdType.EwsId, Office.MailboxEnums.ItemIdType.EntryId, function(result) { if (result.status === Office.AsyncResultStatus.Succeeded) { const mapiEntryId = result.value; // 此处拿到的就是和桌面端一致的MAPI格式ID } else { // 处理转换失败的情况 } } );
二、使用全局唯一标识符GlobalObjectId
GlobalObjectId是Exchange对象自带的全局唯一ID,Web和桌面端都能读取,天生通用:
- Web端获取:通过
getPropertyAsync读取MAPI属性0x68050102(对应GlobalObjectId)Office.context.mailbox.item.getPropertyAsync( "{00062002-0000-0000-C000-000000000046}/68050102", function(result) { if (result.status === Office.AsyncResultStatus.Succeeded) { const globalId = result.value; // 这个ID在Web和桌面端完全一致 } } ); - 桌面端COM获取:直接读取约会对象的
GlobalObjectId属性即可,无需额外转换。
三、解决自定义属性兼容问题
如果你之前尝试的Office.CustomProperties和桌面User Property不兼容,可以改用MAPI自定义属性实现互通:
- Web端设置:用
setPropertyAsync创建MAPI自定义属性,指定属性的GUID和标签,比如:Office.context.mailbox.item.setPropertyAsync( "{your-custom-guid}/0x8001001F", // 自定义GUID+属性标签 "your-unique-id", function(result) { if (result.status === Office.AsyncResultStatus.Succeeded) { // 属性设置成功,桌面端可读取 } } ); - 桌面端COM读取:通过MAPI对象的
GetProperty方法,传入对应的属性标签和GUID即可读取该自定义属性。
内容的提问来源于stack exchange,提问作者mate potyesz
相关产品推荐
相关产品推荐

