【发布时间】:2019-05-07 18:41:46
【问题描述】:
我正在开发 Outlook 插件。但我得到的问题是有时 Office.context.mailbox.item.body.getAsync 在加载项页面重新加载时会失败。最糟糕的是,一旦 body.getAsync 返回错误“APICallFailedDueToItemChange”,body.getAsync 将始终失败并出现相同的错误。 此错误的详细信息是 {name: "APICallFailedDueToItemChange", message: "The selected item has been changed.", code: 9030}
我尝试调用 getAsync 甚至重新加载整个窗口以使加载项重新启动,但错误将持续发生。唯一的方法是切换到另一封电子邮件。
重现步骤: 1.创建任何尝试获取电子邮件正文的Outlook添加 2.加载项后,重新加载加载项窗口 3.一旦发生9030错误,控制台中的那些代码总是会触发相同的错误,直到我切换到另一封电子邮件
await new Promise((resolve, reject) => {
window.Office.context.mailbox.item.body.getAsync('text', (result) => {
if (result.status === 'succeeded') {
console.log(result.value)
return resolve(result.value); // updated as suggested by Mavi Domates
} else {
console.error(result.error)
return reject(result.error);
}
})
})
我希望即使之前的回调失败,getAsync 也应该可以正常工作,但实际上永远不会清除异常。
【问题讨论】:
-
你在哪个客户端测试这个? Windows Win32 桌面? Outlook Web 访问?等等还有什么具体的版本?
-
另外你是如何重新加载加载项窗口的?
-
如果您使用 SupportsPinning 功能。您还需要为 itemChanged 事件实现 addHandlerAsync。否则,在项目上调用 API 将导致该错误。
-
@OutlookAdd-insTeam-MSFT 我的客户端是 MacOS 10.14.4 Outlook 16.24。为了重现此窗口,我通过右键单击加载项并选择“重新加载”来重新加载页面。它随机发生,但尝试了大约 10 次。我还添加了 itemChanged 事件,为什么切换到另一封电子邮件可以恢复此问题。
-
@OutlookAdd-insTeam-MSFT 我在github 中创建了一个测试项目。你能帮忙看看吗?谢谢 这个问题与我想固定该任务窗格有关。在我更改清单之前,我尝试重新加载窗口大约 20 多次,没有问题。使用 addHandlerAsync 相关逻辑后,如果我固定任务窗格并切换电子邮件,然后通过右键单击重新加载。错误重现。
标签: office-js outlook-web-addins outlook-for-mac