You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:47:35