簡體   English   中英

從Outlook加載項中讀取擴展屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM