我正在将应用程序特定的事件导出到MS Calendar。
为了区别它们(以便以后由应用程序更新/删除),我为它们设置了扩展属性(使用SingleValueExtendedProperties
)。
我发现了如何通过此扩展属性的存在(和值)来过滤事件 (例如{Get events that have an custom property set by an add-in)
我还发现了如何通过$expand
-特定的事件ID来请求此属性的值-
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/singlevaluelegacyextendedproperty_get
我找不到如何获得匹配事件的列表和 每个项目的扩展属性。对于我检查过的所有示例(在第二个链接下都有很多),它们指出The response does not include the matching extended property.
为什么如此,然后如何?显然,获得$filter
版本的列表,然后$expand
每个带有单独请求的项目并不是很有效...
我将非常感谢您的帮助/提示/想法。
答案 0 :(得分:0)
根据您的描述,我假设您想列出事件并扩展每个项目的属性。
我们可以参考this document。该文档说,
Using the query parameter $expand allows you to get the specified resource instance expanded with a specific extended property.
Use a $filter and eq operator on the id property to specify the extended property.
This is currently the only way to get the singleValueLegacyExtendedProperty object that represents an extended property.
我们可以在the User Voice
上提交此功能请求答案 1 :(得分:0)
我找到了解决方案。可以使用“开放扩展名”来完成:
工作流程如下:
在创建/更新事件时填写extensions
字段:
subject: 'my event',
...
extensions: [{
'@odata.type': 'Microsoft.Graph.OpenTypeExtension',
extensionName: MS_EXTENSION_ID,
appSpecificId: myId
}]
然后使用类似这样的查询来过滤并展开“开放扩展名”值:
url: 'https://graph.microsoft.com/v1.0/me/events'
+ '?$select=subject,start,end'
+ '&$filter=Extensions/any(f:f/id eq \'' + MS_EXTENSION_ID + '\')'
+ '&$expand=Extensions($filter=id eq \'' + MS_EXTENSION_ID + '\')',
MS_EXTENSION_ID
可能只是一个反向域名,例如Biz.MyCompany.Events