如何使用 Microsoft Graph 按自定义列值查找 SharePoint 文档 API
How to find SharePoint documents by custom column value using Microsoft Graph API
通过我的 Office 365 帐户在 SharePoint Online 网站中,我在我的文档中添加了一列 - "CustomerId"。我想在 C# 中查找 CustomerId 为 102 的所有文档(不在 JavaScript 中)。
到目前为止,我可以获取一个文件夹下的所有文件
var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
.Children.Request().GetAsync().Result;
或者在 Graph Explorer 中看到同样的结果
https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{driveItemId}/children
但我还没有找到使用 C# 或 Graph Explorer 中的自定义列筛选条件获取所有文档 (driveIems) 的正确语法。我尝试过的事情的例子:
在 C# 中
var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
.Search("fields/CustomerId eq 102").Request().GetAsync().Result;
希望有人能帮我解决这个问题。
更新:
之前我从
获得了 driveItemId
var customerFolder = graphClient.Sites[siteId].Drive.Root
.ItemWithPath("CustomerGroup/IndustryGroup").Request().GetAsync().Result;
string driveItemId = customerFolder.Id;
我知道我可以得到一个 ListItem
var customerFolder = graphClient.Sites[siteId].Drive.Root
.ItemWithPath("CustomerGroup/IndustryGroup").Request()
.Expand(d => d.ListItem).GetAsync().Result;
但我只从 customerFolder.ListItem.Id
中找到了一个列表 ID 为“4”的列表
如何获取列表 ID 以便在 graphClient.Sites[siteId].Lists[listId] 中使用它?
我建议使用以下查询:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?filter=fields/CustomerId eq 123&expand=driveItem
解释:
- 通过
filter
查询选项过滤列表中的项目
- return 通过
expand
查询选项 为列表项关联驱动器项
这是 msgraph-sdk-dotnet
的示例:
var request = await graphClient.Sites[siteId].Lists[listId].Items.Request().Filter("fields/CustomerId eq 123").Expand(item => item.DriveItem).GetAsync();
foreach (var item in request)
{
Console.WriteLine(item.DriveItem.WebUrl);
}
更新
可以像这样检索驱动器的基础文档库列表(及其属性):
var list = await graphClient.Sites[siteId].Drive.List.Request().GetAsync();
Console.WriteLine(list.Id); //gives SharePoint List Id
Note: https://graph.microsoft.com/beta/sites/{site-id}/drive
endpoint returns the default drive (document library) for this site
参考
通过我的 Office 365 帐户在 SharePoint Online 网站中,我在我的文档中添加了一列 - "CustomerId"。我想在 C# 中查找 CustomerId 为 102 的所有文档(不在 JavaScript 中)。
到目前为止,我可以获取一个文件夹下的所有文件
var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
.Children.Request().GetAsync().Result;
或者在 Graph Explorer 中看到同样的结果 https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{driveItemId}/children
但我还没有找到使用 C# 或 Graph Explorer 中的自定义列筛选条件获取所有文档 (driveIems) 的正确语法。我尝试过的事情的例子:
在 C# 中
var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
.Search("fields/CustomerId eq 102").Request().GetAsync().Result;
希望有人能帮我解决这个问题。
更新:
之前我从
var customerFolder = graphClient.Sites[siteId].Drive.Root
.ItemWithPath("CustomerGroup/IndustryGroup").Request().GetAsync().Result;
string driveItemId = customerFolder.Id;
我知道我可以得到一个 ListItem
var customerFolder = graphClient.Sites[siteId].Drive.Root
.ItemWithPath("CustomerGroup/IndustryGroup").Request()
.Expand(d => d.ListItem).GetAsync().Result;
但我只从 customerFolder.ListItem.Id
中找到了一个列表 ID 为“4”的列表如何获取列表 ID 以便在 graphClient.Sites[siteId].Lists[listId] 中使用它?
我建议使用以下查询:
https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?filter=fields/CustomerId eq 123&expand=driveItem
解释:
- 通过
filter
查询选项过滤列表中的项目 - return 通过
expand
查询选项 为列表项关联驱动器项
这是 msgraph-sdk-dotnet
的示例:
var request = await graphClient.Sites[siteId].Lists[listId].Items.Request().Filter("fields/CustomerId eq 123").Expand(item => item.DriveItem).GetAsync();
foreach (var item in request)
{
Console.WriteLine(item.DriveItem.WebUrl);
}
更新
可以像这样检索驱动器的基础文档库列表(及其属性):
var list = await graphClient.Sites[siteId].Drive.List.Request().GetAsync();
Console.WriteLine(list.Id); //gives SharePoint List Id
Note:
https://graph.microsoft.com/beta/sites/{site-id}/drive
endpoint returns the default drive (document library) for this site
参考