Yan*_*ans 4 sharepoint microsoft-graph-api
我正在尝试通过 Microsoft Graph 从 SharePoint 获取列表项的集合,我想按 CreatedBy 进行筛选。请求:https://graph.microsoft.com/v1.0/sites/{siteid}/lists/TeamRequests/items
返回:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('{url}')/lists('TeamRequests')/items",
"value": [
{
"@odata.etag": "\"56ad787e-bd69-464a-b5da-dd953e40d7c4,13\"",
"createdDateTime": "2018-02-26T08:34:26Z",
"eTag": "\"56ad787e-bd69-464a-b5da-dd953e40d7c4,13\"",
"id": "11",
"lastModifiedDateTime": "2018-03-22T13:20:03Z",
"webUrl": "{url}/Lists/TeamRequests/11_.000",
"createdBy": {
"user": {
"email": "{email}",
"id": "9c9cbb67-c049-4a2d-845d-6c5ca2300041",
"displayName": "{Name}"
}
},
"lastModifiedBy": {
"user": {
"email": "{email}",
"id": "9c9cbb67-c049-4a2d-845d-6c5ca2300041",
"displayName": "{Name}"
}
},
"parentReference": {},
"contentType": {
"id": "0x01005F15F8133495554D834FF82F187AD0630002133A9CCDE4494D8CB2206D7D6453D6"
}
},
Run Code Online (Sandbox Code Playgroud)
现在我想过滤此请求以查找 createBy(ID、displayName 或电子邮件地址)。我尝试了?$filter=createdBy/user/email eq '{email}'
类似的 id 或 displayName 请求。他们都回来了
{
"error": {
"code": "generalException",
"message": "An unspecified error has occurred.",
"innerError": {
"request-id": "492e3bde-05fe-4484-a475-435ff0aa70b6",
"date": "2018-07-23T07:41:46"
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么如何实现这个过滤器呢?甚至支持吗?
尽管这听起来像是一个简单的查询,但我还没有找到比以下解决方案更简单的解决方案:
除了提供用户 ID的情况外,似乎不支持按用户字段进行过滤,这就是解决方案包含两个步骤的原因:
1)首先,我们需要Id
通过确定用户Email
,为此可以使用以下查询:
https://graph.microsoft.com/v1.0/sites/root/lists('User Information List')/items?expand=fields(select=Id,Email)
Run Code Online (Sandbox Code Playgroud)
*其中User Information List
系统列表存储用户属性,包括 ID 和电子邮件属性 *
Id
2)解析用户后,可以应用按用户 ID过滤项目的最终查询:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists('list-name')/items?filter=fields/<user-field-name>LookupId eq '<user-id>'
Run Code Online (Sandbox Code Playgroud)
在哪里
<user-field-name>LookupId
是除了用户字段之外还公开的字段,如果是Created
字段,则名称应该是AuthorLookupId
例子:
https://graph.microsoft.com/v1.0/sites/root/lists('TeamRequests')/items?filter=fields/AuthorLookupId eq '10'
Run Code Online (Sandbox Code Playgroud)
笔记
在某些情况下,会返回以下错误 Field ''无法在过滤器或 orderby 中引用,因为它未建立索引。提供“Prefer: HonorNonIndexedQueriesWarningMayFailRandomly”标头以允许这样做,但请注意,此类查询可能会在大型列表上失败。
在这种情况下,需要应用以下请求标头:
首选:HonorNonIndexedQueriesWarningMayFailRandomly
归档时间: |
|
查看次数: |
2729 次 |
最近记录: |