Outlook加载项事件处理程序清理

时间:2019-03-19 09:55:01

标签: event-handling outlook-addin office-js office-addins outlook-web-addins

我的办公室插件中的事件处理程序遇到问题。以下是我从Microsoft网站获得的示例代码,以解释我的意思。 我有一个清单文件,该文件使用了发送挂钩和基于单击的事件触发。 我的按钮叫appendMessageBodyOnClick,然后我叫appendMessageBodyOnSend。两种功能主要做同样的事情。无论如何,我永远都不想阻止发送电子邮件。

问题是我认为事件对象没有正确清理。

场景1 当我点击我的按钮时;会调用event.completed(),然后在我尝试发送消息后,它说我的应用阻止了该消息,但是当我再次尝试发送消息时,消息却通过了。

场景2 当我将主题留空,然后发送消息时,如预期的那样,我会提示主题为空。如果我取消发送此便笺上的消息,然后单击我的按钮,则该消息将尝试发送,就像我单击“发送”一样。

我想这是某种形式或状态的清理问题。我在这里做什么错了?

Function-File.js

function appendMessageBodyOnClick(event) {
    // Append string to message body
    event.completed();
}

// In the following example, the checkMessage function has
// been registered as an event handler for ItemSend.
function appendMessageBodyOnSend(event) {
     // Append string to message body
    event.completed({allowEvent = true});
}

1 个答案:

答案 0 :(得分:0)

不确定这是否有帮助,但是在理解如何表明事件已完全完成时,我也遇到了一些看似不一致的行为。一旦修复好边缘盒,它就会起作用。

一个建议:将字符串追加到消息正文应该是一个异步函数。从回调函数内部调用event.completed()。 (即:确保在调用event.completed()时,没有其他待处理状态-类似于另一个异步结果)

类似以下内容:

Office.context.mailbox.item.body.setAsync("new body", function(asyncResult) {
    // handle success and failure
    event.completed()
});

与您的方案2相同,请确保在最后调用event.completed()。