Как найти документы SharePoint по значению пользовательского столбца с помощью Microsoft Graph API - PullRequest
0 голосов
/ 26 января 2019

На сайте SharePoint Online через мою учетную запись Office 365 я добавил столбец «CustomerId» в мои документы.Я хочу найти все документы с CustomerId, равным 102, в C # (не в 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

, но я не определил правильный синтаксис для получения всех документов (driveIems), используя пользовательское условие фильтрации столбцов в C # или в Graph Explorer.Примеры вещей, которые я пробовал:

В C #

var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
            .Search("fields/CustomerId eq 102").Request().GetAsync().Result;

В Graph Explorer https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{driveItemId}/search(q='CustomerId eq 102 ')

Надеюсь, кто-то можетпомогите мне в этом.

Обновление:
Ранее я получил идентификатор DriveItem из

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;

но я нашел только идентификатор списка «4» из customerFolder.ListItem.Id

Как мне получить идентификатор списка, чтобы я мог использовать его в graphClient.Sites [siteId] .Lists [listId]

1 Ответ

0 голосов
/ 28 января 2019

Я бы предложил использовать следующий запрос:

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

Примечание: https://graph.microsoft.com/beta/sites/{site-id}/drive конечная точка возвращает диск по умолчанию (библиотека документов) для этого сайта

Ссылка

Работа с сайтами SharePoint вMicrosoft Graph

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...