使用 Graph API 查询 SharePoint 列表项并展开用户字段
Posted
技术标签:
【中文标题】使用 Graph API 查询 SharePoint 列表项并展开用户字段【英文标题】:Using Graph API to query SharePoint list items and expand user field 【发布时间】:2019-07-07 00:06:29 【问题描述】:我正在尝试查询一些 SP 列表项,一切正常,但我似乎无法扩展 Person 类型的自定义列。
我可以看到 createdBy
和 lastModifiedBy
扩展,甚至包括 AAD 用户 ID,这很棒,也让我认为我想要的都是可能的!
但我的是自定义列。
我正在运行它,但似乎只能获取 SP 用户列表 ID 和用户的显示名称......这两者都没有多大用处。
/items?expand=fields(select=UserLookupId,User)
理想情况下,我希望根据 createdBy 和 modifiedBy 字段获取 AAD 用户 ID,但电子邮件就足够了。
否则我能看到的唯一方法是查询User Information List
(使用UserLookupId
)来获取电子邮件?
谢谢
【问题讨论】:
【参考方案1】:这似乎是正确的假设:
否则我能看到的唯一方法就是查询用户信息列表 (使用 UserLookupId)来获取电子邮件?
对于非系统的用户字段,确实是一条路,但是用户字段是多值还是单-重视。
如果Approvers
是多值用户字段,则查询如下:
https://graph.microsoft.com/v1.0/sites/site-id/lists/list-id/items?$expand=fields($select=Approvers)
返回email
和id
属性以及用户字段值的displayName
属性。
而对于单值用户字段 仅 id
(可通过userfieldLookupId
属性获得)和displayName
属性可以通过items endpoint 请求,对于示例:
https://graph.microsoft.com/v1.0/sites/site-id/lists/list-id/items?$expand=fields($select=Approver,ApproverLookupId)
所以,确实需要使用User Information List
来请求其他用户属性,例如:
https://graph.microsoft.com/v1.0/sites/root/lists('User Information List')/items/item-id/?$expand=fields($select=Email)
其中item-id
对应于用户字段查找id
【讨论】:
好的,谢谢。已经有一段时间了,没有人带来更好的东西。所以我会接受并继续这样做,希望以后会有所改善!【参考方案2】:这是我修改 Build Angular single-page apps with Microsoft Graph。在下面的示例中,我使用默认文本更改了我的 id。
这里是 The Finished Project on thier github
在 Graph Explorer 中,这工作。您可以在Microsoft Graph Explorer 进行验证。
https://graph.microsoft.com/v1.0/sites/site-id/lists/list-id/items?expand=fields($select=id,Title)
在应用程序的 app/graph.service.ts 中,这不起作用。即使您希望它基于图形浏览器。
.api('/sites/site-id/lists/list-id/items?fields($select=id,Title)')
更改 app/graph.service.ts api 调用工作。
.api('/sites/site-id/lists/list-id/items?')
.expand('fields($select=id,Title)')
结果如下所示:
fields:
@odata.etag: ""d6f5b6ea-9f90-452d-98ba-e838f58d3359,1"",
Title: "IT SPECIALIST (MID)",
id: "20"
这是一个示例站点 ID:
some.sharepoint.com,9dk062b-2e54-4e4f-b71a-cdb74f42cc44,c6cf6b0a-cc7c-41fd-a76a-ef8f97e8a22f
这是一个示例列表 ID。
8eg8c29a-5555-4cfc-bfa4-0e907488f781
结束 url 中不会有任何 。
【讨论】:
我使用相同的 ?expand=fields(select=id,Title) 并得到 ""error": "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException", "message ": "表达式 \"fields(select\" 无效。"," Graph 有什么变化吗?以上是关于使用 Graph API 查询 SharePoint 列表项并展开用户字段的主要内容,如果未能解决你的问题,请参考以下文章
向 Facebook 查询正在使用/可以使用的 Graph API 版本
Office Graph API 和查询 Office Graph 之间的区别
使用 Graph API 查询 SharePoint 列表项并展开用户字段