0

我正在使用 Microsoft Graph List CalendarView从 Outlook 获取日历事件。我想过滤掉参加者人数为 0 的项目。(逻辑上意味着为自己阻止时间)。

我知道有一个 $count 参数将返回项目数。但是,在 List CalendarView 响应中,我不是在计算日历项目的数量,而是在每个日历项目中的参与者数量。事实上,使用基于它的不等于(ne)过滤器。

{
  "value": [
    {
      "originalStartTimeZone": "originalStartTimeZone-value",
      "originalEndTimeZone": "originalEndTimeZone-value",
      "iCalUId": "iCalUId-value",
      "reminderMinutesBeforeStart": 99,
      "isReminderOn": true,
      "attendees":[
            {
                "type":"required",
                "status":{
                    "response":"none",
                    "time":"0001-01-01T00:00:00Z"
                },
                "emailAddress":{
                    "name":"Samantha Booth",
                    "address":"samanthab@a830edad905084922E17020313.onmicrosoft.com"
                }
            },
            {
                "type":"required",
                "status":{
                    "response":"none",
                    "time":"0001-01-01T00:00:00Z"
                },
                "emailAddress":{
                    "name":"Dana Swope",
                    "address":"danas@a830edad905084922E17020313.onmicrosoft.com"
                }
            }
        ]
    }
  ]
}

我想专门过滤掉“参加者”的数组大小为 0 的任何事件项。

使用 OData 查询参数是否可行?

4

1 回答 1

1

似乎attendees不支持对属性进行过滤,例如,有关详细信息,请参见此线程。但可以考虑以下方法:

a)为资源引入一个扩展属性,它将公开关于.eventattendees

更新所有现有事件:

PATCH https://graph.microsoft.com/v1.0/me/events/{event-id}
Content-Type: application/json
{
  "singleValueExtendedProperties": [
      {
         "id":"String {66f5a359-4659-4830-9070-00047ec6ac6e} Name ContainsAttendes",
         "value":"1"
      }
    ]
}

b)现在可以像这样过滤事件:

https://graph.microsoft.com/beta/me/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'String {66f5a359-4659-4830-9070-00047ec6ac6e} Name ContainsAttendes' and ep/value eq '1')

假设ContainsAttendes=1对应于有一个或多个参加者的事件

于 2019-06-03T13:26:25.057 回答