[英]Read ExtendedProperties from Outlook Add-In
我目前正在使用EWS托管API(C#)在CalendarFolder
上設置自定義ExtendedProperties
:
myCalendar.SetExtendedProperty(customExtendedProperty, true);
綁定CalendarFolder
時,我還可以使用Managed API加載那些設置:
var myCalendar = CalendarFolder.Bind(service, folderId, requestedPropertySet);
接下來,我想從使用Office JavaScript庫的Outlook加載項中讀取這些相同的ExtendedProperties
。
從Outlook庫的外觀看,沒有公開Office.context.item
任何方法來訪問ExtendedProperties
。
庫中是否有允許我訪問此方法的方法? 如果沒有,我可以使用URL路徑( "http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/yourProp"
)中具有GUID的架構方法嗎?
要訪問Addin中文件夾上的自定義屬性,您需要使用makeEwsRequestAsync https://dev.outlook.com/reference/add-ins/Office.context.mailbox.html#makeEwsRequestAsync在Addin中執行GetFolder。 要獲取正確的SOAP消息,只需在您的EWS托管API代碼中啟用跟蹤即可,該代碼將輸出使用了https://msdn.microsoft.com/zh-cn/library/office/dn495632(v=exchg.150).aspx的SOAP您可以將它們移調。 要注意的一件事是在您的應用中制作makeEwsRequestAsync的安全要求,例如ReadWriteMailbox http://dev.office.com/docs/add-ins/outlook/understanding-outlook-add-in-permissions
截至目前(2018年7月),編寫Outlook加載項時訪問自定義ExtendedProperties的首選方法是使用ExtendedProperties REST API 。
有一些示例代碼顯示了如何將API與Office加載項JavaScript庫一起使用(可從Office Dev Center獲得) 。
要使用該API,您需要從當前的Outlook郵箱中獲取身份驗證令牌。 可以使用帶有關鍵字參數{isRest: true}
的Office.context.mailbox.getCallbackTokenAsync()
方法來完成此操作。還應該使用Office.context.mailbox.restUrl
屬性來獲取API調用的正確基本URL。
有幾種方法可以從JavaScript實際進行REST API調用,但是最簡單的客戶端方法是使用AJAX調用。 在您的示例中,這看起來像:
const getMessageUrl = Office.context.mailbox.restUrl
+ "/v2.0/me/mailFolders/" + <folder id> + "?"
+ "$expand=singleValueExtendedProperties"
+ "($filter=PropertyId eq '<property id>')";
$.ajax({
url: getMessageUrl,
datatype: 'json',
headers: {'Authorization': 'Bearer ' + <auth token>}
}).then(item => {
// your code here
})
如果您的屬性具有GUID,則<property id>如下所示:
"String {00020329-0000-0000-C000-000000000046} Name yourProp"
如果您像我一樣,並且試圖訪問GUID規則之前的屬性,那么您的<property id>可能如下所示:
"String 0x007D"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.