Чтение ExtendedProperties из надстройки Outlook
Я сейчас настраиваю кастом ExtendedProperties
на CalendarFolder
используя EWS Managed API (C#):
myCalendar.SetExtendedProperty(customExtendedProperty, true);
Я также могу использовать Managed API для загрузки этих настроек при привязке CalendarFolder
:
var myCalendar = CalendarFolder.Bind(service, folderId, requestedPropertySet);
Я хотел бы затем прочитать эти же ExtendedProperties
, но из надстройки Outlook с использованием библиотек Office JavaScript.
Судя по всему, библиотека Outlook не предоставляет никаких методов Office.context.item
чтобы получить доступ к ExtendedProperties
,
Есть ли в библиотеке методы, позволяющие мне получить к этому доступ? Если нет, могу ли я использовать подход схемы, который имеет GUID в пути URL ("http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/yourProp"
)?
2 ответа
Чтобы получить доступ к вашим собственным настраиваемым свойствам в папке в Addin, вам нужно использовать makeEwsRequestAsync https://dev.outlook.com/reference/add-ins/Office.context.mailbox.html, чтобы сделать GetFolder в вашем Addin. Чтобы получить правильное сообщение SOAP, просто включите трассировку в вашем коде EWS Managed API, который выведет используемый SOAP https://msdn.microsoft.com/en-us/library/office/dn495632(v=exchg.150).aspx который Вы можете это транспонировать. Единственное, о чем следует знать, это требования безопасности для создания makeEwsRequestAsync в вашем приложении, например, ReadWriteMailbox http://dev.office.com/docs/add-ins/outlook/understanding-outlook-add-in-permissions
На данный момент (июль 2018 года) предпочтительный способ доступа к настраиваемым расширенным свойствам при написании надстройки для Outlook заключается в использовании расширенного API-интерфейса ExtendedProperties.
Ниже приведен пример кода, демонстрирующий использование API с библиотекой JavaScript надстройки Office, которую можно получить в Центре разработки Office.
Чтобы использовать API, вам нужно получить токен авторизации из текущего почтового ящика Outlook. Это можно сделать с помощью Office.context.mailbox.getCallbackTokenAsync()
метод, с ключевым параметром {isRest: true}
. Вы также должны использовать Office.context.mailbox.restUrl
свойство, чтобы получить правильный базовый URL для вызова API.
Есть несколько способов сделать вызов API REST из JavaScript, но самый простой способ сделать это на стороне клиента - это вызов 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 для вашего свойства, то
"String {00020329-0000-0000-C000-000000000046} Name yourProp"
Если вы похожи на меня и пытаетесь получить доступ к свойству, которое предшествует правилам GUID, тогда ваш <идентификатор свойства> может выглядеть следующим образом:
"String 0x007D"