簡體   English   中英

Odata查詢outlook rest api

[英]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響應中包含SubjectFromBodyReceivedDateTime

有人可以幫忙嗎?

僅供參考 - 如果它有filtersearch我會得到輸出。 但是當一起使用時,我收到“錯誤請求”錯誤。

現在這不受支持。 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM