【问题标题】:How to use filter in Microsoft Graph API to get SharePoint items?如何在 Microsoft Graph API 中使用筛选器来获取 SharePoint 项目?
【发布时间】:2018-11-28 13:30:50
【问题描述】:

这里我试图根据创建日期过滤数据。第一次我尝试在 Graph Explorer 中运行它。

https://graph.microsoft.com/v1.0/me/messages?$filter=createdDateTime ge 2017-09-04&$select=subject,lastModifiedDateTime

现在尝试在 Dell Boomi 中实现相同的功能。这是拉取所有项目的资源路径:sites/{id}.sharepoint.com:/sites/{id}:/lists/{list_id}/items 它工作正常。

之后我添加过滤条件:

sites/{id}.sharepoint.com:/sites/{id}:/lists/{list_id}/items?$filter=lastModifiedDateTime ge 2017-09-04&$select=email,displayName

这里出现错误。这是错误信息:

<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request</h2>
<hr><p>HTTP Error 400. The request is badly formed.</p>

有人可以帮忙解决这个问题吗? 这是示例数据。

> {   "@odata.context":
> "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.list)(&#39;1334af71-5b7a-4276-a8d8-c3f3f129051d&#39;)/items",
> "value": [
>     {
>       "@odata.etag": "&quot;ef6e961c-a956-400e-a77d-f044d2e0b894,8&quot;",
>       "createdDateTime": "2018-05-24T13:38:10Z",
>       "eTag": "&quot;ef6e961c-a956-400e-a77d-f044d2e0b894,8&quot;",
>       "id": "3",
>       "lastModifiedDateTime": "2018-06-18T10:24:27Z",
>       "webUrl": "https://{id}.sharepoint.com/sites/{id}/Doc%20Interfaces/757391.pdf",
>       "createdBy": {
>         "user": {
>           "email": "abc@abc.COM",
>           "id": "173abc",
>           "displayName": "abc"
>         }
>       },
>       "lastModifiedBy": {
>         "user": {
>           "email": "xyz@abc.COM",
>           "id": "234xyz",
>           "displayName": "xyz"
>         }
>       },
>       "parentReference": {
>         "id": "03fe-16595a0da875"
>       },
>       "contentType": {
>         "id": "0x01"
>       },
>       "fields@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.list)(&#39;1334f71-c3f3f129&#39;)/items(&#39;3&#39;)/fields/$entity",
>       "fields": {
>         "@odata.etag": "&quot;ef6e961-f044d2e0b894,8&quot;",
>         "FileLeafRef": "757391.pdf",

【问题讨论】:

    标签: sharepoint microsoft-graph-api sharepoint-online boomi


    【解决方案1】:

    简答

    使用自动生成的 SharePoint 列表项字段已创建已修改

    /items?expand=fields&$filter=fields/Modified gt '2018-01-01'
    

    重要提示

    要对这些字段执行过滤查询,您必须:

    • 索引这些列(看看here如何)
    • 或在您的请求中设置 'Prefer: HonorNonIndexedQueriesWarningMayFailRandomly' 标头(Microsoft 不推荐)

    解释

    似乎不支持对图形端点返回的值(例如 lastModifiedDateTime、createdDateTime 等)进行过滤,因为像 /items&$filter=lastModifiedDateTime ge '2018-01-01 这样的请求' 将返回一个“无效的过滤子句” 错误。

    【讨论】:

    • 这个对我有用:/items?$expand=Fields&$filter=fields/Modified lt '2018-12-28T00:00:00Z'
    • 不知道为什么它不适合我。我试过这个也很累来调整这个但没有工作。同样的错误。不确定戴尔 boomi 是否以其他方式处理此问题。
    • 感谢@JollyBrackets,这对我有用,但您是否注意到“等于”似乎不起作用?我知道列表项的 ID,但总是收到“无效的过滤子句”错误。有什么想法吗?
    【解决方案2】:

    我刚刚在向 Boomi 提交 OData 查询时解决了一个非常相似的问题。问题是过滤器字符串中的空格:

    您的字符串:$filter=lastModifiedDateTime ge '2017-09-04' 应该是:$filter=lastModifiedDateTime%20ge%20'2017-09-04'

    【讨论】:

      【解决方案3】:

      请尝试

      sites/{id}.sharepoint.com:/sites/{id}:/lists/{list_id}/items?$filter=lastModifiedDateTime ge '2017-09-04'&$select=email,displayName
      

      filter=lastModifiedDateTime ge '2017-09-04' --> 单引号

      注意:如果您选择任何查找值,您需要使用 $expand 查询选项 例如:

      sites/{id}.sharepoint.com:/sites/{id}:/lists/{list_id}/items?$filter=lastModifiedDateTime ge '2017-09-04'&$select=email,displayName&$expand=displayName/Name
      

      【讨论】:

      • 感谢您的意见。我之前尝试过this'2017-09-04',但它不起作用。
      • 你用 $expand 试过了吗
      • 为了更好地理解我在问题中添加了示例数据。请检查。在这里,我使用这个 URL 来提取数据。 sites/{id}.sharepoint.com:/sites/{id}:/lists/{list_id}/items?expand=fields。通过这个我能够得到上面提到的数据。之后,我尝试按日期使用过滤器,但它不起作用。这是网址:sites/{id}.sharepoint.com:/sites/{id}:/lists/{list_id}/items?$filter=lastModifiedDateTime ge '2017-09-04'&$expand=值/webUrl
      • 对我也不起作用。我无法过滤任何“元”数据,甚至是 ID(例如 ?filter=id eq '15')
      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多