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

На сайте 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/%7BsiteId%7D/drive/items/%7BdriveItemId%7D/children

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

In 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/%7BsiteId%7D/drive/items/%7BdriveItemId%7D/search(q=

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

Обновление:
Раньше я получал 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;

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

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


person detale    schedule 25.01.2019    source источник


Ответы (1)


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

https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?filter=fields/CustomerId eq 123&expand=driveItem

Объяснение:

  • фильтровать элементы в списке с помощью параметра запроса filter
  • вернуть связанные элементы диска для элемента списка с помощью параметра запроса 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 < / а>

person Vadim Gremyachev    schedule 28.01.2019
comment
Спасибо, Вадим. Можете ли вы проверить мой обновленный вопрос, поскольку я не могу найти способ получить ListItemId? - person detale; 28.01.2019
comment
Еще раз спасибо, Вадим. Ваш метод действительно работает! Есть ли способ искать / фильтровать файлы только в папке sharepoint (CustomerGroup / IndustryGroup)? - person detale; 28.01.2019
comment
Как мне просто вернуть все настраиваемые столбцы и их значения для каждого дочернего элемента вместо фильтрации? По умолчанию они не отображаются, и ?expand=fields у меня не работал. - person itslittlejohn; 09.03.2019