2015-11-26 1 views
0

Я пытаюсь получить список писем с их InternetMessageID.Фильтрация нескольких возможных значений с помощью ExtendedProperties и Office 365 REST API

Для одного данного InternetMessageID, я могу получить соответствующую почту следующий синтаксис при условии in Outlook documentation

"https://outlook.office365.com/api/beta/me/messages?$filter=SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' and ep/Value eq '<[email protected]>')"; 

Теперь давайте говорить, что я хочу, чтобы получить два письма с той же просьбой мне не удалось получить успешный синтаксис.

Например

"https://outlook.office365.com/api/beta/me/messages?$filter=SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' and (ep/Value eq '<[email protected]>' or ep/value eq '[email protected]'))"; 

не работает. BadRequest возвращаются с сообщением

The filter expression for $filter does not match to a single extended property and a value restriction. 

Я пробовал много сочетания группирования, а также проверить с $expand заявления, как предложено в this question. Есть ли способ выполнить такие запросы с помощью Outlook Web Api Graph API?

ответ

1

Я просто попытался это, как хорошо, и я получаю более информативное сообщение об ошибке:

{ 
    "error": { 
    "code": "ErrorInvalidUrlQueryFilter", 
    "message": "The filter expression for $filter on property ExtendedProperty only allows 
       [and] and [eq] operators. The equality can only be specified between 
       'PropertyId' and a constant or 'Value' and a constant (for example: 
       PropertyId eq 'value')." 
    } 
} 

UPDATE: Проверено с моей командой инженеров, и эта ошибка относится к тому, что находится внутри какого-либо заявления. Вы не можете использовать OR там. Чтобы сделать эту работу, вам нужно два отдельных утверждения ANY, соединенных OR:

https://outlook.office.com/api/beta/me/messages?$filter= 
    SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' 
            and ep/Value eq '[email protected]') or 
    SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' 
            and ep/Value eq '[email protected]rdomain') 
+1

Спасибо! Я закончил тем, что использовал EWS вместо Office 365 apis (к счастью, azureAD позволяет нам это делать). Когда это будет возможно, я, вероятно, вернусь к использованию Apache Office365 REST. –

+0

Есть способ, я обновил свой ответ :) –

+0

работает хорошо даже с несколькими «или»! Благодарю. –

Смежные вопросы