Javascript 在outlook JS加载项中调用REST API时确认事件完成
我正在构建一个JS加载项,只要单击功能区中的按钮,就可以将带有添加注释“STOP”的消息转发到定义的地址。为了转发,我使用Javascript 在outlook JS加载项中调用REST API时确认事件完成,javascript,rest,outlook-addin,office-addins,outlook-web-addins,Javascript,Rest,Outlook Addin,Office Addins,Outlook Web Addins,我正在构建一个JS加载项,只要单击功能区中的按钮,就可以将带有添加注释“STOP”的消息转发到定义的地址。为了转发,我使用POST请求调用restapi 在函数末尾添加event.completed()时,使用(event)作为参数,getCallbackTokenAsync根本不会运行 相反,如果没有它,外接程序会正确地转发消息,但信息栏不会取消显示,脚本会继续在循环中运行: 指示脚本正在运行的信息栏: 在调用RESTAPI时如何正确处理事件.completed() //函数sendAsSt
POST
请求调用restapi
在函数末尾添加event.completed()
时,使用(event)
作为参数,getCallbackTokenAsync根本不会运行
相反,如果没有它,外接程序会正确地转发消息,但信息栏不会取消显示,脚本会继续在循环中运行:
指示脚本正在运行的信息栏:
在调用RESTAPI时如何正确处理事件.completed()
//函数sendAsStops直接从清单文件调用
函数sendAsStops(事件){
log(“初始化停止命令”);
var restHost=Office.context.mailbox.restUrl;
var itemId=getItemRestId();
console.log(itemId);
Office.context.mailbox.getCallbackTokenAsync({isRest:true},函数(结果){
if(result.status==Office.AsyncResultStatus.successed){
console.log('Sending email…');
var accessToken=result.value;
控制台日志(结果);
var getMessageUrl=restHost+'/v2.0/me/messages/'+itemId+'/forward';
$.ajax({
url:getMessageUrl,
键入:“post”,
标头:{“授权”:“承载者”+accessToken},
contentType:'应用程序/json',
数据类型:“json”,
数据:JSON.stringify({
'注释':'停止',
'ToRecipients':[{'EmailAddress':{'Address':'name@address.com' }}],
})
}).done(函数(){
log(“停止成功转发”);
}).失败(功能(错误){
console.log(“发送失败”);
});
}否则{
console.log(“无法继续。参考:+结果。状态”);
返回false;
}
});
事件。已完成();
}
函数getItemRestId(){
console.log(“获取项目ID…”);
if(Office.context.mailbox.diagnostics.hostName==='OutlookIOS'){
log(“ID已准备好使用”);
return Office.context.mailbox.item.itemId;
}否则{
console.log('转换ID…);
return Office.context.mailbox.convertorestid(
Office.context.mailbox.item.itemId,
Office.MailboxEnums.RestVersion.v2\u 0
);
}
}必须在外接程序执行结束时调用事件.completed()
。调用event.completed()
将终止外接程序,因此任何异步调用(如本例中的getCallbackTokenAsync
callback)都将自动终止并清除。因此,您看不到转发消息的加载项
在整个外接程序执行完成后调用event.completed()
。比如:
$.ajax({
url: getMessageUrl,
type: 'post',
headers: { 'Authorization': 'Bearer ' + accessToken },
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({
'Comment': 'STOP',
'ToRecipients': [{'EmailAddress': { 'Address': 'name@address.com' }}],
})
}).done(function() {
console.log("Stop successfully forwarded.");
event.completed();
}).fail(function(error) {
console.log("Failed to send");
event.completed();
});