microsoft-graph-api - 根据 singleValueExtendedProperty 的特定值搜索事件

标签 microsoft-graph-api microsoft-graph-sdks microsoft-graph-calendar

情况:

我们有一个旧应用程序正在 outlook 中创建事件(通过 MAPI)。为了识别事件,自定义属性“CTOID”设置了一个特定值,通过该值可以再次找到事件。

对于较新的应用程序,我们希望使用图形 API,但该应用程序仍应能够读取/查找旧应用程序创建的事件。因此,我创建了一个具有特定 CTOID 的测试事件,并且我已经可以使用图形客户端获取具有相应属性及其值的上述事件(queryOptions 只是一些开始/结束日期限制)。

// Initialize the GraphServiceClient.
GraphServiceClient client = await m_MicrosoftGraphClient.GetGraphServiceClient();

// Load user events.
var request = client.Users[userId].CalendarView.Request(queryOptions).Expand("singleValueExtendedProperties($filter=id%20eq%20'Double%20{00020329-0000-0000-C000-000000000046}%20Name%20CTOID')");
var result = await request.GetAsync();
var calendarEvents = result.CurrentPage;

结果:

正确获取事件,包括 CTOID 属性的值。 enter image description here

问题:

我可以“展开”事件,以便它们包含 CTOID 属性的值。但是如何找到具有特定 CTOID 值的事件?具体来说,如何使用 C# 中的 Graph 客户端执行此操作?

根据documentation还有这个Stackoverflow post ,以下 REST 调用应该有效:

GET /users/{id|userPrincipalName}/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq '{id_value}' and ep/value eq '{property_value}')

所以我在在线 Graph Explorer 中尝试了这个:

https://graph.microsoft.com/v1.0/users/[MY_USER_ID]/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'Double {00020329-0000-0000-C000-000000000046} Name CTOID' and ep/value eq '229236')

但我得到的回应是:

{
    "error": {
        "code": "ErrorInvalidUrlQueryFilter",
        "message": "The filter expression for $filter does not match to a single extended property and a value restriction.",
        "innerError": {
            "date": "2020-08-03T12:44:05",
            "request-id": "33e82c77-92ea-4865-a8d0-00cfc2f99154"
        }
    }
}

我做错了什么?我没有想法,任何帮助将不胜感激。 (此外,如果您知道如何使用 C# 中的 Graph 客户端执行此操作,而不仅仅是简单的 REST 调用)。

附加信息:

不知道这是否重要,但为我们的应用程序设置了以下权限: enter image description here

最佳答案

在您的过滤器中,您需要将值转换为 Double eg

https://graph.microsoft.com/v1.0/users/[MY_USER_ID]/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'Double {00020329-0000-0000-C000-000000000046} Name CTOID' and cast(ep/value, Edm.Double) eq 229236)

对于除过滤器中的字符串之外的任何其他内容,您需要执行此操作

关于microsoft-graph-api - 根据 singleValueExtendedProperty 的特定值搜索事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63230286/

相关文章:

outlook - ResourceNotFound 请求邮箱中的消息时

c# - 获取当前用户的更多信息

microsoft-graph-api - 如何在进行“获取事件”调用时获取事件的日历 ID?

javascript - Onenote API 创建页面

c# - 在 AAD 中按用户 ID 进行用户查找失败

microsoft-graph-api - Office365 图形 API : Fetch Calendar Share Permissions

microsoft-graph-api - Microsoft Graph API GET onlineMeeting 通过 joinUrl

microsoft-graph-api - 无法访问 onedrive 内容

angular - 使用 Adal Angular 在 Microsoft Graph API 中访问 token 验证失败

microsoft-graph-api - 将事件从 SeriesMaster 转换为 SingleInstance