使用Graph API查询SharePoint列表项并展开用户字段

问题描述 投票:0回答:2

我正在尝试查询一些SP列表项,一切正常,但我似乎无法展开Person类型的自定义列。

我可以看到createdBylastModifiedBy扩展,甚至包括AAD用户ID,这很棒,也让我认为我想要的是可能的!

但我的是一个自定义专栏。

我正在运行它,似乎只能得到SP用户列表ID和用户的显示名称......两者都没有多大用处。

/items?expand=fields(select=UserLookupId,User)

理想情况下,我想根据createdBy和modifiedBy字段获取AAD用户ID,但电子邮件就足够了。 否则,我能看到的唯一方法是查询User Information List(使用UserLookupId)来获取电子邮件?

谢谢

sharepoint microsoft-graph sharepoint-online
2个回答
0
投票

这似乎是正确的假设:

否则,我能看到的唯一方法是查询用户信息列表(使用UserLookupId)来获取电子邮件?

对于非系统用户字段,它确实是一种方法,但用户字段是多值还是单值有一些区别。如果Approvers是多值用户字段,则以下查询:

https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$expand=fields($select=Approvers)

为用户字段值返回emailid属性以及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


0
投票

这是我改变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

结束网址中不会包含任何{}。

© www.soinside.com 2019 - 2024. All rights reserved.