I'm trying to use the OData $filter query parameter with the calendarView endpoint in MS Graph. It seems to work fine until I combine AND with OR. Does anyone know the proper syntax?
Private Sub buildQuery()
m_webQuery = "https://graph.microsoft.com/v1.0/me/calendars/calendar/calendarView"
m_webQuery = m_webQuery & "?$select=subject,organizer, start,end"
m_webQuery = m_webQuery & "&startDateTime=" & Format$(m_projectStart, "yyyy-mm-dd")
m_webQuery = m_webQuery & "&endDateTime=" & Format$(m_projectStart + 365, "yyyy-mm-dd")
m_webQuery = m_webQuery & "&$filter= (contains(subject,'PTO') or contains(subject,'OOO')) and organizer/emailAddress/name eq 'John Doe'"
m_webQuery = m_webQuery & "&$orderby=organizer/emailAddress/name"
m_webQuery = m_webQuery & "&$top=500"
End Sub
The filter failing to produce correct results
m_webQuery = m_webQuery & "&$filter= contains(subject,'PTO') or contains(subject,'OOO') and organizer/emailAddress/name eq 'Joe Smith'"
The result should be any event containing PTO or OOO in the subject where the organizer is John Doe
I've tried combining using parans but no avail.
From the testing it's not possible to combine filtering by
organizer/emailAddress/nametogether with filtering by any other property.So either
or
will work.
Only solution is to use one of the filter above for server side filtering and then apply the other filter on the client.