0

我在使用makeEwsRequestAsync請求在Outlook中添加郵箱搜索功能。makeEwsRequestAsync在Outlook桌面客戶端中不起作用

var mailbox = Office.context.mailbox; 
mailbox.makeEwsRequestAsync(request, callback); 

它在Outlook Web客戶端運行良好,但我總是在Outlook桌面客戶端得到空的結果。

回調函數:

function callback(asyncResult) { 

     var result = asyncResult.value; 
     var context = asyncResult.context; 

     if (asyncResult.status == "succeeded") { 

      var xmlDoc = $.parseXML(result.toString()); 
} 
} 

XML解析之後,$(xmlDoc中)的.text()提供的XML文本。

但是$(xmlDoc).find('node')在Outlook桌面客戶端(Outlook 2013)中不起作用。我試圖給節點名稱在首都,較低(例如s:信封,s:信封,S:信封),但find()不起作用

我應該怎麼做才能在Outlook桌面客戶端中獲得結果。我正在使用outlook 2013.

+0

你需要給更多的通知(例如,它沒有顯示或激活或不起作用的事情)和代碼,很可能是因爲你沒有正確解析結果(試着返回未解析的結果),即使在不同的Web瀏覽器中也可能發生這種情況(例如,你是否在Chrome和IE中編碼工作?)。郵箱版本1.3在Outlook 2013中也不起作用,您需要Outlook 2016,但您尚未發佈足夠的信息來告訴您是否使用了該版本。 –

+0

@glen謝謝,更新了我的問題。 – Selva

+0

我使用的是Windows 10,並且在EDGE(IE最新版)中完美工作。但是$(xml).find('node')在Outlook桌面版 – Selva

回答

1

您需要根據客戶端的不同來解析XML,其中有關於https://msdn.microsoft.com/en-us/library/office/fp160952.aspx的討論。如果轉儲result.toString()的內容,您將能夠確定實際返回到在Outlook中運行的Javascript處理器的內容,然後應該能夠確定如何正確處理它。

還有的例子微軟已經發布在GitHub上號如https://github.com/OfficeDev/Outlook-Add-in-JavaScript-MakeEWSRequest

我個人使用它在大多數瀏覽器和臺式機的Outlook版本,但我一般通過輸出結果時才起作用下面先來看看正在返回什麼,那麼它很容易計算出你下一步應該做的事情和js的對象是最好用

function callbackFindItems(asyncResult) { 
 
    //$('#ChkTest').text(asyncResult.value); 
 
    var result = asyncResult.value; 
 
    var context = asyncResult.context; 
 
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 
 
    if (is_chrome) { 
 
     var parser = new DOMParser(); 
 
     var doc = parser.parseFromString(asyncResult.value, "text/xml"); 
 
     var values = doc.childNodes[0].getElementsByTagName("ItemId"); 
 
     var itemId = values[0].attributes['Id'].value; 
 
     var changeKey = values[0].attributes['ChangeKey'].value; 
 
     var request = UpdateVerb(itemId, changeKey, hexToBase64(_VerOptions)); 
 
     var envelope = getSoapEnvelope(request); 
 
     // $('#ChkTest').text(request); 
 
     Office.context.mailbox.makeEwsRequestAsync(envelope, updateCallBack); 
 
    } 
 
    else { 
 
     var parser = new DOMParser(); 
 
     var doc = parser.parseFromString(asyncResult.value, "text/xml"); 
 
     var values = doc.childNodes[0].getElementsByTagName("t:ItemId"); 
 
     var itemId = values[0].attributes['Id'].value; 
 
     var changeKey = values[0].attributes['ChangeKey'].value; 
 
     var request = UpdateVerb(itemId, changeKey, hexToBase64(_VerOptions)); 
 
     var envelope = getSoapEnvelope(request); 
 
     //$('#ChkTest').text(request); 
 
     Office.context.mailbox.makeEwsRequestAsync(envelope, updateCallBack); 
 
    } 
 
}

+0

中不起作用,正是我昨天爲解決該問題所做的。謝謝 :) – Selva