如何使用 Microsoft graph api 和 OData 过滤具有特定电子邮件地址或名称的日历事件?

How can I filter calendar events with a specific email address or name using Microsoft graph api and OData?

我正在使用 Microsoft graph api 来获取日历事件。 现在我只想获取其中一位与会者具有特定姓名或电子邮件地址的事件。 描述此类事件的示例响应是

{
  "subject": "General meeting",
  "attendees": [
    {
      "emailAddress": {
        "name": "Peter Pan",
        "address": "peter.pan@neverland.org"
      }
    },
    {
      "emailAddress": {
        "name": "Captain Hook",
        "address": "captain.hook@neverland.org"
      }
    }
  ]
}

根据 Microsofts documentation 的说法,实现此目的的可能方法是使用 OData 和 any 运算符。但是我找不到使用查询参数访问 nameaddress 等嵌套属性的方法。

我希望我能做这样的事情

https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=2022-01-01T00:00:00.000Z&enddatetime=2022-31-01T00:00:00.000Z&$select=attendees,subject&$filter=attendees/any(var:var/emailAddress/address eq 'peter.pan@neverland.org')

但是像那样使用子参数 (emailAddress/address) 会导致错误的请求。

如果 emailAddress 字段只是一个实际的电子邮件而不是另一个实体,过滤就可以了。

https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=2022-01-01T00:00:00.000Z&enddatetime=2022-31-01T00:00:00.000Z&$select=attendees,subject&$filter=attendees/any(var:var/emailAddress eq 'peter.pan@neverland.org')

是否可以达到我想要的效果?

根据 this 评论图 API 不支持向下钻取多个级别的关系。