我在 Microsoft Graph 中执行以下查询:
var results = await SPLists["<my-list-name>"]
.Items
.Request()
.Expand("fields")
.GetAsync();
它获取我在 SharePoint 中拥有的列表的列表项。该列表中的一列的类型为“个人或组”。在 Microsoft Graph 的响应中,它返回如下所示的列数据(例如):
{
"LookupId": 335,
"LookupValue": "John Doe"
}
我如何利用这些数据?如何使用 Microsoft Graph 获取 ID 为
355
的人员的完整个人资料?我需要返回者的电子邮件地址。如何使用 Microsoft Graph SDK 获取该信息?
Look Id 335是名为“用户信息列表”的SharePoint隐藏列表中的Id,您可以使用请求获取列表guid:
https://graph.microsoft.com/v1.0/sites/site-id/lists?$filter=DisplayName eq 'User Information List'
然后使用下面端点中的列表guid来获取详细的电子邮件地址:
https://graph.microsoft.com/v1.0/sites/site-id/lists/UserInformationListId/items/335
这里有一个类似的帖子供您参考:
下面是一个 C# 示例,它查询隐藏的 SharePoint“用户信息列表”,然后提取用户查找 ID 和电子邮件地址。
string siteId = "ADD_YOUR_SITE_ID_HERE";
// Query the "User Information List" to get the users info
var userInfoList = await graphClient.Sites[siteId].Lists.GetAsync((request) =>
{
request.QueryParameters.Filter = $"DisplayName eq 'User Information List'";
});
if (userInfoList == null || userInfoList.Value == null || !userInfoList.Value.Any())
{
Console.WriteLine($"User Information List not found");
return;
}
// The first record is the User Information List ID
var listId = userInfoList.Value.First().Id;
var userList = await graphClient.Sites[siteId].Lists[listId].Items.GetAsync((request) =>
{
request.QueryParameters.Expand = new string[] { $"fields($select=EMail)" };
request.QueryParameters.Top = 1000; // Default is 200, so I increased it
});
if (userList == null || userList.Value == null)
{
Console.WriteLine($"No user records found");
return;
}
foreach (var item in userList.Value)
{
var listData = item.Fields?.AdditionalData;
string userInfo = $"Lookup ID: {item.Id}";
if(listData != null && listData.ContainsKey("EMail"))
userInfo += $", Email: {listData?["EMail"].ToString()}";
Console.WriteLine(userInfo);
}