[英]Odata query for outlook rest api
如何在同一個查詢中使用搜索和過濾?
String url = "https://outlook.office.com/api/v2.0/me/messages?$filter=ReceivedDateTime ge 2016-02-22&$select=Subject,From,Body,ReceivedDateTime&$search=\"subject:(Chris Brown OR Michael Jackson)\"";
我需要找到Subject
為“克里斯布朗”或“邁克爾傑克遜”的所有郵件,並在2016年2月22日之后收到郵件。此外,它應該在REST響應中包含Subject
, From
, Body
, ReceivedDateTime
。
有人可以幫忙嗎?
僅供參考 - 如果它有filter
或search
我會得到輸出。 但是當一起使用時,我收到“錯誤請求”錯誤。
現在這不受支持。 從使用OData查詢參數 :
您不能在搜索請求中使用$ filter或$ orderby 。
因此,執行此操作的唯一方法是通過查詢執行搜索,然后在客戶端上進行過濾; 或相反亦然。
更新
在這種特殊情況下,由於主題是可過濾的,並且據說您只需要精確的主題匹配(例如,不是“包含”),您可以使用以下內容:
https://outlook.office.com/api/v2.0/me/messages?$filter=(ReceivedDateTime ge 2016-02-22) and ((subject eq 'Chris Brown') or (subject eq 'Michael Jackson'))
回答原來的問題:是的,這是可能的 。 @ roman-pletnev正確地指出你不能在$search
請求中使用$filter
或$orderby
。 但是,您只需使用$search
即可獲得所需的結果。
$search="
(subject:(Chris Brown) OR subject:(Michael Jackson))
AND (received:02/22/2016..10/21/2016)
"
請注意,為了便於閱讀,已包含額外的換行符。
另請注意, received
參數似乎只適用於單個日期或特定范圍。 即你不能要求“02/22/2016之后的一切”。 相反,你必須輸入今天的日期(或未來的日期?)作為范圍的結束。
received:<date>
received:02/22/2016
received:<start>..<end>
received:02/22/2016..10/21/2016
我不是百分之百確定日期格式。 我不知道它是否取決於您帳戶的區域設置,或者它是否始終為MM/DD/YYYY
。
其他變化似乎也有效。 但是,這方面的文檔非常糟糕,“收到”的大部分文檔語法似乎都不起作用。 我已就此向微軟提交了支持票。
其他一些文檔化的語法確實有效,例如received:today
一些記錄的語法不起作用 ,例如received:October
參考文獻:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.