Фильтр OData API Microsoft Graph Calendar по начальной / конечной дате-времени

#microsoft-graph-api

#microsoft-graph-api

Вопрос:

Я пытаюсь получить только определенные события от пользователя calendarView в API календаря Microsoft Graph.

Я написал следующий код проверки концепции:

         start = self.date_to_string(datetime.datetime.now())
        end = self.date_to_string(datetime.datetime.now()   datetime.timedelta(days = 365 * 3))
        start, end = min(start, end), max(start, end)

        data = await self.make_request(url, parameters = {
            "startDateTime" : start,
            "endDateTime" : end,
            "$filter" : "Start/DateTime ge '2017-07-01T08:00'" # and (start/dateTime ge '2020-10-21T16:31:40.5470240')"
        })
  

Хотя, когда я делаю запрос, это то, что я получаю

 {
  "error": {
    "code": "ErrorInternalServerError",
    "message": "An internal server error occurred. The operation failed.",
    "innerError": {
      "date": "2020-10-22T15:20:56",
      "request-id": "bef9513d-a5b3-4b23-b37a-8f341f6822ae",
      "client-request-id": "bef9513d-a5b3-4b23-b37a-8f341f6822ae"
    }
  }
}
  

Удаление $filter подсказок, но мне это нужно (я хотел бы фильтровать события, начинающиеся в диапазоне дат и / или заканчивающиеся в диапазоне дат и времени).

Я попробовал несколько вещей:

  • cast(2017-07-01T08:00 as Edm.DateTimeOffset)
  • 2017-07-01T08:00Z
  • 2017-07-01T08:00Z 00:00

На самом деле практически любая комбинация, о которой можно подумать, но безрезультатно. Обратите внимание, что официальные документы используют разные форматы, в том числе '2017-07-01T08:00' (как в ?$filter=start/dateTime ge '2017-07-01T08:00' )

Есть идеи?

Комментарии:

1. Я изучаю это. Вернется к вам..

2. Очень мило с вашей стороны, спасибо 🙂

3. Пожалуйста, используйте свойства типа ресурса события для фильтрации: learn.microsoft.com/en-us/graph/api/resources /. … CalendarView предоставляет список расширенных событий в указанном диапазоне времени.

4. Мне это не очень помогает @Diana: свойства, которые я пытаюсь отфильтровать, которые есть startDateTime и endDateTime перечислены в event типе ресурса, поэтому я должен иметь возможность фильтровать по ним. CalendarView предоставляет мне события в указанном диапазоне времени, но я хотел бы предоставить более сложные ограничения, чем то, что он позволяет мне делать…

5. Я смотрю на ссылку на тип ресурса события и не могу найти эти свойства: startDateTime или endDateTime — возможно, вы можете использовать start и end вместо этого?