【问题标题】:Get custom property set in Outlook Add-In via Microsoft Graph通过 Microsoft Graph 在 Outlook 加载项中设置自定义属性
【发布时间】:2017-08-25 03:25:39
【问题描述】:

假设我的 Outlook 加载项(使用 Office.js)中有以下代码在约会的撰写表单上运行:

const item = Office.context.mailbox.item;
item.loadCustomPropertiesAsync((result) => {
    const props = result.value;
    const testProp = props.get("my_prop");
    console.log("CUSTOM_PROP", testProp);
    props.set("my_prop", "test_value");
    props.saveAsync((saveResult) =>
        console.log("SAVE_CUSTOM_PROP", saveResult));
});

我明白了,它实际上是保存在事件中的。

现在还有一堆关于这些自定义属性的问题:

  1. 但是那些与扩展属性有某种关联吗?

  2. 是否可以通过 Outlook REST API 或 Microsoft Graph 以某种方式访问​​这些属性?

  3. 是否可以使用 Microsoft Graph 和基于这些属性的筛选器创建推送通知订阅? (我知道我可以基于扩展属性)

  4. 如果上述问题的答案是“否”,并且自定义属性只能通过创建它们的加载项访问,有没有办法从加载项为事件创建扩展属性,即使没有保存?

解释我为什么要问 - 我正在创建一个插件,它允许将约会“连接”到我们的第 3 方系统,并使该约会与我们的对象保持同步。

所以当点击撰写表单上的按钮时,我:

  • 保存预约并获取event-id
  • 将其存储在我们的系统中,以便从我们的系统同步到约会。
  • 使用 Microsoft Graph 在我们的系统中为该约会添加扩展属性

在第一次使用插件时,用户进行身份验证,然后我使用我们的扩展属性为事件创建推送通知订阅,以便从 Outlook 同步到我们的系统。

它在 OWA 上运行良好,但现在我们确实需要支持桌面,因此出现了两个主要问题:

  • Outlook for Mac:没有saveAsync 方法,因此无法获取事件的id,我正在考虑添加一些自定义属性,然后让推送通知通知我们的系统,一个事件是已创建,需要与系统同步。

  • PC 版 Outlook:有 saveAsync 方法,但是当约会保存在本地时执行回调,而不是在服务器上,因此我不知道确切的事件何时创建,我可以对该事件进行一些 Microsoft Graph 调用。

欢迎回答我的第一个问题和/或任何关于我的用例的提示。

【问题讨论】:

    标签: office-js outlook-restapi outlook-web-addins microsoft-graph-api


    【解决方案1】:

    TL;DR; 是的,可以使用 REST API 读取由 Office.js api loadCustomPropertiesAsync 设置的自定义属性 您需要创建一个 REST 调用查询,如下所示

    string addinManifestId = "<your manifest guid here>";//lower cases
    string prop = @"String {00020329-0000-0000-C000-000000000046} Name"+ string.Format(" cecp-{0}", addinManifestId );
    var url = $"<apiEndpoint>/messages/<youritemid>?$expand=SingleValueExtendedProperties($filter=PropertyId eq '{propertyname}')";
    

    更多信息

    文档可在此处获得https://msdn.microsoft.com/en-us/library/hh968549(v=exchg.80).aspx

    当我需要为我的加载项 Keluro 处理“已发送邮件”时,我遇到了类似的问题。 我使用 REST API 上的网络挂钩实现了一些非常接近您的方法的方法。据我所知,这是处理已发送物品的唯一方法。 考虑对此进行投票 https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/10964871-add-itemsend-event-so-add-in-can-cancel-email

    【讨论】:

      【解决方案2】:
      1. 根据MS-OXCEXT,关于加载项如何在 Outlook 中存储内容的互操作性文档,自定义属性作为 JSON 字典存储在 MAPI 扩展属性中(该链接上的详细信息)。这意味着您应该能够通过 Graph 扩展属性访问它们,您只需要自己解析值。
      2. 应该使用extended properties"{type} {guid} Name {name}" 格式。
      3. 我不明白为什么不这样做。
      4. 答案不是不,但无论如何我都会回答您的后续问题 :)。如果您使用加载项中的 REST API,当然可以做到这一点。

      【讨论】:

      • 感谢您的支持 :) 我真的很接近完成与 O365 的集成,但是有一个问题,跟进这个问题,写在一个单独的问题 over here
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多