亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 outlook JS 加載項中調用 REST API 時確認事件完成

在 outlook JS 加載項中調用 REST API 時確認事件完成

qq_遁去的一_1 2023-03-03 10:47:02
我正在構建一個 JS 加載項,它只需在單擊功能區中的按鈕時將帶有添加注釋“STOP”的消息轉發到定義的地址。為了轉發,我通過請求調用 REST API POST。event.completed()在函數末尾添加(event)作為參數時,getCallbackTokenAsync 根本不運行。相反,如果沒有它,加載項會正確轉發消息,但信息欄不會消失并且腳本會繼續循環運行:表示腳本正在運行的信息欄:https ://i.stack.imgur.com/zGa2K.pngevent.completed()關于調用 REST API 時我應該如何正確處理的任何想法?// the function sendAsStops is called directly from the manifest filefunction sendAsStops(event) {  console.log("Initialising STOP command.");  var restHost = Office.context.mailbox.restUrl;  var itemId = getItemRestId();  console.log(itemId);  Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {    if (result.status === Office.AsyncResultStatus.Succeeded) {      console.log('Sending email...');     var accessToken = result.value;      console.log(result);      var getMessageUrl = restHost + '/v2.0/me/messages/' + itemId + '/forward';        $.ajax({          url: getMessageUrl,          type: 'post',          headers: { 'Authorization': 'Bearer ' + accessToken },          contentType: 'application/json',          dataType: 'json',          data: JSON.stringify({            'Comment': 'STOP',            'ToRecipients': [{'EmailAddress': { 'Address': '[email protected]' }}],          })         }).done(function() {           console.log("Stop successfully forwarded.");         }).fail(function(error) {           console.log("Failed to send");        });    } else {      console.log("Unable to proceed. Ref: " + result.status);      return false;    }  });  event.completed();}function getItemRestId() {  console.log("Getting item ID...");  if (Office.context.mailbox.diagnostics.hostName === 'OutlookIOS') {    console.log("ID ready to use.");    return Office.context.mailbox.item.itemId;  } else {    console.log('Converting ID...');    return Office.context.mailbox.convertToRestId(      Office.context.mailbox.item.itemId,      Office.MailboxEnums.RestVersion.v2_0    );  }}
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

event.completed()必須在加載項執行結束時調用。調用event.completed()會終止您的加載項,因此任何異步調用(例如getCallbackTokenAsync本例中的回調)都會自動終止并清除。因此,您看不到加載項轉發消息。


event.completed()在您的整個加載項執行完成后調用。就像是:


       $.ajax({

          url: getMessageUrl,

          type: 'post',

          headers: { 'Authorization': 'Bearer ' + accessToken },

          contentType: 'application/json',

          dataType: 'json',

          data: JSON.stringify({

            'Comment': 'STOP',

            'ToRecipients': [{'EmailAddress': { 'Address': '[email protected]' }}],

          })

         }).done(function() {

           console.log("Stop successfully forwarded.");

           event.completed();

         }).fail(function(error) {

           console.log("Failed to send");

           event.completed();

        });


查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號