我目前正使用EWS托管API(C#)在ExtendedProperties
上设置自定义CalendarFolder
:
myCalendar.SetExtendedProperty(customExtendedProperty, true);
我绑定CalendarFolder
时可以使用托管API加载这些设置:
var myCalendar = CalendarFolder.Bind(service, folderId, requestedPropertySet);
我接下来想要阅读这些ExtendedProperties
,但是使用Office JavaScript库从Outlook加载项中读取。
从Outlook库的外观中,不会显示Office.context.item
之外的任何方法来访问ExtendedProperties
。
库中是否有允许我访问它的方法?如果没有,我可以使用URL路径("http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/yourProp"
)中具有GUID的架构方法吗?
答案 0 :(得分:3)
要在Addin中的文件夹上访问您自己的自定义属性,您需要使用makeEwsRequestAsync https://dev.outlook.com/reference/add-ins/Office.context.mailbox.html#makeEwsRequestAsync在Addin中执行GetFolder。要获得正确的SOAP消息,只需在您的EWS托管API代码中启用跟踪,该代码将输出您可以使用的https://msdn.microsoft.com/en-us/library/office/dn495632(v=exchg.150).aspx转置的SOAP。要注意的一件事是在应用程序中制作makeEwsRequestAsync的安全要求,例如ReadWriteMailbox http://dev.office.com/docs/add-ins/outlook/understanding-outlook-add-in-permissions
答案 1 :(得分:1)
截至目前(2018年7月),编写Outlook加载项时访问自定义ExtendedProperty的首选方法是使用ExtendedProperties REST API。
有一些示例代码显示了如何将API与Office外接JavaScript库一起使用,可从Office Dev Center获得。
要使用API,您需要从当前的Outlook邮箱中获取身份验证令牌。可以使用Office.context.mailbox.getCallbackTokenAsync()
方法和关键字参数{isRest: true}
来完成。您还应该使用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,则
"String {00020329-0000-0000-C000-000000000046} Name yourProp"
如果您像我一样,并且试图访问GUID规则之前的属性,那么您的
"String 0x007D"