Клиентская библиотека Microsoft Graph API - создайте папку - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь создать папку в существующей папке в SharePoint с помощью Microsoft Graph (C # SDK).Я понимаю, что создание папки в SharePoint или OneDrive должно быть одинаковым при использовании Graph API, но все же я не смог найти хороших онлайн-ссылок.Единственная найденная статья - старая , в которой есть только пример на JavaScript.

У меня есть корневая папка A, и я хочу создать подпапку B в разделе A.

Вот код:

var driveRequestBuilder = graphClient
    .Sites[SharePointSiteId]
    .Lists[ListId]
    .Drive;

var folderRequestBuilder = driveRequestBuilder
    .Root
    .ItemWithPath("A");
var folderDriveItem = folderRequestBuilder
    .Request()
    .GetAsync()
    .Result; // This returns the root folder "A"'s info

var subFolderDriveItem = new DriveItem()
{
    Name = "B",
    Folder = folderDriveItem.Folder
};
var result = folderRequestBuilder
    .Request()
    .CreateAsync(subFolderDriveItem)
    .Result;

Последняя строка кода выдает AggregateException (из-за TPL), который содержит внутреннее исключение:

Code: -1, Microsoft.SharePoint.Client.InvalidClientQueryException
Message: The parameter folder does not exist in method getByPath.
Inner error

Я хочу знать правильный синтаксис для создания подпапки.

1 Ответ

2 голосов
/ 24 мая 2019

В случае подпапки конечная точка для создания папки должна быть

POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/drive/root:/{path}:/children
Content-Type: application/json

{
  "name": "New folder name",
  "folder": { },
  "@microsoft.graph.conflictBehavior": "rename"
}

Пример для msgraph-sdk-dotnet:

var folder = new DriveItem
{
    Name = "<sub folder name>",
    Folder = new Folder()
};

var result = await graphClient
    .Sites[siteId]
    .Lists[listId]
    .Drive
    .Root
    .ItemWithPath("<folder path>")
    .Children
    .Request()
    .AddAsync(folder);
...