我正在尝试查询一些SP列表项,一切正常,但我似乎无法展开Person类型的自定义列。
我可以看到createdBy
和lastModifiedBy
扩展,甚至包括AAD用户ID,这很棒,也让我认为我想要的是可能的!
但我的是一个自定义专栏。
我正在运行它,似乎只能得到SP用户列表ID和用户的显示名称......两者都没有多大用处。
/items?expand=fields(select=UserLookupId,User)
理想情况下,我想根据createdBy和modifiedBy字段获取AAD用户ID,但电子邮件就足够了。
否则,我能看到的唯一方法是查询User Information List
(使用UserLookupId
)来获取电子邮件?
谢谢
这似乎是正确的假设:
否则,我能看到的唯一方法是查询用户信息列表(使用UserLookupId)来获取电子邮件?
对于非系统用户字段,它确实是一种方法,但用户字段是多值还是单值有一些区别。如果Approvers
是多值用户字段,则以下查询:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$expand=fields($select=Approvers)
为用户字段值返回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
结束网址中不会包含任何{}。