使用 Graph API 查询 SharePoint 列表项并扩展用户字段
Using Graph API to query SharePoint list items and expand user field
我正在尝试查询一些 SP 列表项,一切正常,但我似乎无法扩展类型为 Person 的自定义列。
我可以看到 createdBy
和 lastModifiedBy
扩展,甚至包括 AAD 用户 ID,这很棒,也让我觉得我想要的是可能的!
但我的是自定义列。
我是运行这个,似乎只能获取SP用户列表id和用户的显示名称...这两个都没什么用。
/items?expand=fields(select=UserLookupId,User)
理想情况下,我想根据 createdBy 和 modifiedBy 字段获取 AAD 用户 ID,但电子邮件就足够了。
否则,我能看到的唯一方法是查询 User Information List
(使用 UserLookupId
)以获取电子邮件?
谢谢
这似乎是正确的假设:
Otherwise the only way I can see is to query the User Information List
(using the UserLookupId) to get the email?
对于非系统用户字段,确实是一种方法,但是用户字段是否多值[=43]有一些区别=] 或 单值 。
如果 Approvers
是一个多值用户字段,那么下面的查询:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$expand=fields($select=Approvers)
returns email
和 id
属性以及 displayName
属性 用户字段值。
虽然对于单值用户字段 仅 id
(可通过{userfield}LookupId
属性) 和 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
这是我修改的经验
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 中没有任何 {}。
我正在尝试查询一些 SP 列表项,一切正常,但我似乎无法扩展类型为 Person 的自定义列。
我可以看到 createdBy
和 lastModifiedBy
扩展,甚至包括 AAD 用户 ID,这很棒,也让我觉得我想要的是可能的!
但我的是自定义列。
我是运行这个,似乎只能获取SP用户列表id和用户的显示名称...这两个都没什么用。
/items?expand=fields(select=UserLookupId,User)
理想情况下,我想根据 createdBy 和 modifiedBy 字段获取 AAD 用户 ID,但电子邮件就足够了。
否则,我能看到的唯一方法是查询 User Information List
(使用 UserLookupId
)以获取电子邮件?
谢谢
这似乎是正确的假设:
Otherwise the only way I can see is to query the User Information List (using the UserLookupId) to get the email?
对于非系统用户字段,确实是一种方法,但是用户字段是否多值[=43]有一些区别=] 或 单值 。
如果 Approvers
是一个多值用户字段,那么下面的查询:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$expand=fields($select=Approvers)
returns email
和 id
属性以及 displayName
属性 用户字段值。
虽然对于单值用户字段 仅 id
(可通过{userfield}LookupId
属性) 和 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
这是我修改的经验 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 中没有任何 {}。