【问题标题】:Office-js \\ outlook addin : Office.cast.item.toAppointment(Office.context.mailbox.item) returns errorOffice-js \\ Outlook 插件:Office.cast.item.toAppointment(Office.context.mailbox.item) 返回错误
【发布时间】:2018-10-26 07:51:22
【问题描述】:

我们目前正在开发一个 Outlook 插件,它需要列出与电子邮件或约会相关联的电子邮件地址。

我们在电子邮件部分实现这一点没有问题,但约会更具挑战性,因为 Office.context.mailbox.item 始终指向 AppointmentCompose 对象,当我们尝试将其强制转换为 AppointmentRead 时,它会返回以下错误:

Office.cast.item.toAppointment(Office.context.mailbox.item)
outlook-web-16.01.debug.js:10346 Uncaught Error: Sys.ArgumentTypeException: 
Object cannot be converted to the required type.

为了记录,在这种情况下我们尝试投射的对象是一个已经存在的约会

这是正常行为吗?我们如何将 office.context.mailbox.item 转换为约会阅读?

感谢您的帮助。

问候。

【问题讨论】:

    标签: office-js outlook-web-addins


    【解决方案1】:

    是的,这是正常行为。您不能将 AppointmentCompose 强制转换为 AppointmentRead,因为支持的 API 不同。根据您使用的客户端,以组织者的身份打开现有约会(如果您创建了约会,则组织者)将始终是 AppointmentCompose。

    如果您有兴趣列出电子邮件地址,您应该考虑使用 https://docs.microsoft.com/en-us/javascript/api/outlook_1_5/office.recipients?view=office-js#getasync-options--callback- 来表示 requiredAttendees 和 optionalAttendees,例如 Office.context.mailbox.item.requiredAttendees.getAsync

    【讨论】:

    • 谢谢,我们确实通过 getAsync 方法列出了电子邮件地址。我认为如果 item 对象有一个方法来告诉他处于哪个状态(读取或撰写)会很好,现在我们不得不猜测如果管理器属性未定义,它处于撰写模式。此外,Compose 表单的问题在于,即使已经创建了约会,我们也无法获取项目的 Id。
    • 为了检测 Read vs Compose,请不要回复是否存在管理器 API,因为这将在最新版本的 Outlook 中的 Compose 中定义(请参阅requirement set 1.7 中的 item.organizer)。您可以向加载项清单中的源位置 URL 添加查询参数,以区分两个入口点。
    • 在Compose中获取item的id,请使用item.saveAsync API,它在回调中返回itemId。
    • 感谢您提供的这些精确信息!对于撰写模式与阅读模式,我们使用了邮箱的 GetIsRead 方法,但由于它没有在文档中列出,我们想知道它是否是一种有效的方法。如果没有,我们将按照建议切换到查询参数。我们确实使用了 saveAsync API 来获取 itemId 但这需要将加载项权限升级到 ReadWrite 并且我们不能在不强制保存的情况下获得 itemId 有点可惜。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2017-11-13
    • 2021-06-10
    相关资源
    最近更新 更多