【问题标题】:Set CustomProperties on appointment for all attendees为所有与会者设置自定义属性
【发布时间】:2017-01-06 02:12:27
【问题描述】:

tl;dr

CustomProperties 设置为有与会者的约会时,只有组织者的约会才能获得CustomProperties。这些属性不会传播到其他与会者的约会。


加长版

当我们创建与多个与会者的约会,然后以每个与会者的身份登录时,我们注意到每个ItemId 是不同的。因此,会议中的每个与会者似乎都有自己的约会副本。 (真的希望有人确认这是真的)。​​

但是,当从我们的加载项(使用 Outlook JavaScript API)设置自定义属性时,只有组织者的约会会获取自定义属性,因为当我们以任何其他与会者身份登录时,我们无法看到自定义属性.

我们代码中的相关片段:

Office.initialize = function (reason) {
    $(document).ready(function () {
         Office.context.mailbox.item.loadCustomPropertiesAsync (onCustomPropertiesLoaded);
    });
};

function onCustomPropertiesLoaded(asyncResults) {
    _customProps = asyncResults.value;
}

//Set custom properties
_customProps.set("myProp", "true");
_customProps.saveAsync(customPropertiesOnSaved);

有没有办法让约会的每个副本都具有自定义属性?

【问题讨论】:

    标签: ms-office outlook-addin exchangewebservices office-addins office-js


    【解决方案1】:

    当我们创建一个约会并有多个参加者,然后以每个参加者的身份登录时,我们注意到每个 ItemId 都是不同的。因此,会议中的每个与会者似乎都有自己的约会副本。 (真的希望有人确认这是真的)。​​

    是的,这是正确的,约会的与会者副本是该邮箱中的一个单独的新项目。在后端 Exchange 服务器上,它是一个单独的邮箱存储项目,它们没有以任何方式链接(除可用于关联它们的属性之外),并且服务器不会更新与会者邮箱中的约会,因此它们必须始终由客户端更新进程(在房间邮箱的情况下,邮箱助手会执行此操作,但这仍然是在服务器上运行的客户端进程)。

    但是,当从我们的加载项设置自定义属性时,只有组织者的约会才能获得自定义属性,因为当我们以任何其他与会者身份登录时,我们无法看到自定义属性。

    这很可能会发生,因为您需要先在约会中保存自定义属性,然后再添加任何与会者并发送会议邀请。在添加任何与会者之前首先保存属性(或附件)的约会很重要,然后当服务器生成邀请时,这些邀请应该包括自定义属性(您可以使用 Mapi 编辑器检查正在发生的情况并查看邀请正在组织者的已发送邮件文件夹中生成)。重要的是要记住,因为约会未在服务器上链接,更新组织者上的属性不会反映在与会者副本上,除非您发送会议更新,然后与会者接受会议更新,然后与会者将更新他们的日历。

    【讨论】:

    • 我们在加载项的上下文中运行,因此我们无法控制何时将与会者添加到邀请中。当用户单击加载项中的按钮时,我们将设置自定义属性customProps.set("myCustomProp", true);,然后将属性保存在约会customProps.saveAsync(callback) 上。我不确定我们还有什么权限可以让自定义属性进入每个邀请。
    • 是的,但您需要了解您所做的只会更新您访问的用户的商店项目。您可能需要重新考虑您的设计,例如您要向自定义属性添加哪些信息?你是如何在与会者中使用它的? .自定义属性的一种替代方法是,如果您获取在所有实例之间共享的会议的 UniquieId,则创建一个外部 Rest 服务,该服务将存储您想要的信息,然后使用 uniqueId 作为键等让您的插件查询该外部服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多