Tri*_*let 1 api sharepoint sharepoint-online microsoft-graph-sdks microsoft-graph-api
我在网上的 sharepoint 中有一个列表。在这个列表中,我有一个 person 字段。
当我调用 API 端点以获取列表中的所有项目时,我会得到人员字段的 LookupId 值。
我试图通过使用 lookupid 的值来获取用户,但它不起作用,因为无法识别 id。
lookupid 是一个 int(例如:21)而不是一个 guid。
人员字段的配置或我对 Microsoft Graph API 的调用中是否缺少某些内容?
当用户首次登录 SharePoint 网站集时,会在隐藏的用户信息列表中创建 ListItem。PersonOrGroup 字段中的 LookupId 是指此列表中的 ListItem。SharePoint Online 用户信息列表的 URL 应为:
https://{yourTenant}.sharepoint.com/{yourSiteCollection}/_catalogs/users/detail.aspx
Run Code Online (Sandbox Code Playgroud)
由于用户信息列表是一个通用的 SharePoint 列表,您可以通过图表查询该列表。首先,获取用户信息列表的列表 ID。获取列表 ID 的一种简单方法是通过 Chrome 查看用户信息站点的源并搜索“listId”。你应该找到这样的结果:
"listId":"{yourListIdIsHere}"
Run Code Online (Sandbox Code Playgroud)
复制身份证。通过使用复制的id、你的根站点的id和LookupId,你可以得到用户信息列表中的ListItem:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{pasteCopiedListId}/item/{lookUpId}?$expand=Fields
Run Code Online (Sandbox Code Playgroud)
ListItem 包含有关用户的信息,例如电子邮件,可用于识别 Azure 用户:
https://graph.microsoft.com/v1.0/users/{eMail}
Run Code Online (Sandbox Code Playgroud)
问题:如何从 Microsoft Graph 获取隐藏的用户信息列表?
如果您不想使用 Google Chrome 的“技巧”来获取 id,还有另一种获取站点的方法。通常,如果您想获取任何站点的 id,您可以调用:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists
Run Code Online (Sandbox Code Playgroud)
但是,即使您包含隐藏站点,您也不会找到用户信息列表的 id。我不知道为什么。另一个问题似乎是,您无法按名称过滤列表:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists?$filter=name eq 'users'
Run Code Online (Sandbox Code Playgroud)
查询返回错误,不支持提供的过滤器语句。在不知道 id 的情况下获取列表的唯一方法似乎是使用列表的属性 displayName。但是,显示名称基于您的本地化。因此,由于我来自德国,因此可以使用以下查询获取该站点:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists?$filter=displayName eq 'Benutzerinformationsliste'
Run Code Online (Sandbox Code Playgroud)
您需要将 Benutzerinformationsliste 替换为您的本地化名称。对于 EN,将其替换为“用户信息列表”。
这将返回预期结果:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('xxx')/lists(id,name,displayName)",
"value": [
{
"@odata.etag": "\"xxx\"",
"id": "xxx",
"name": "users",
"displayName": "Benutzerinformationsliste"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如您所见,列表的名称是“用户”,所以为什么第一个过滤器语句不起作用对我来说有点神秘。也许这里有人知道并且可以提供帮助。