Office js Office js\\outlook加载项:Office.cast.item.ToApp(Office.context.mailbox.item)返回错误

Office js Office js\\outlook加载项:Office.cast.item.ToApp(Office.context.mailbox.item)返回错误,office-js,outlook-web-addins,Office Js,Outlook Web Addins,我们目前正在开发outlook加载项,该加载项需要列出与电子邮件或约会关联的电子邮件地址 我们在电子邮件部分实现此功能没有问题,但约会更具挑战性,因为Office.context.mailbox.item始终指向AppointmentCompose对象,当我们尝试将其强制转换为AppointmentRead时,它返回以下错误: Office.cast.item.toAppointment(Office.context.mailbox.item) outlook-web-16.01.debug.j

我们目前正在开发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转换为约会读取

谢谢你的帮助


问候。

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


如果您对列出电子邮件地址感兴趣,您应该考虑使用for RequiredAttenders和OptionalAttenders,如Office.context.mailbox.item.RequiredAttendes.getAsync

谢谢,我们确实通过getAsync方法列出了电子邮件地址。我认为,如果item对象有一个方法来判断他处于读取或撰写状态,那就太好了,因为现在我们不得不猜测如果组织者属性未定义,它处于撰写模式。此外,撰写表单的问题在于,即使已创建约会,我们也无法获取项目的Id。要检测读取与撰写,请不要回复是否存在organizer API,因为这将在最新版本的Outlook中的撰写中定义。请参阅中的item.organizer。您可以将查询参数添加到外接程序清单中的源位置URL,以区分这两个入口点。若要在Compose中获取项目的id,请使用,它将在回调中返回项目id。感谢您的精确性!对于撰写模式与阅读模式,我们使用了邮箱的GetIsRead方法,但由于文档中未列出该方法,我们怀疑它是否有效。如果没有,我们将按照建议切换到查询参数。我们确实使用了saveAsync API来获取itemId,但这需要将外接程序权限升级为ReadWrite,而且如果不强制保存,我们就无法获得itemId,这有点小意思。再次感谢您的帮助!