Как создать новую корневую папку в онлайн-библиотеке документов SharePoint с помощью Graph API в Python

Я могу создавать папки в папках ниже корня библиотеки документов и загружать файлы повсюду, но я не могу понять путь POST для создания новой папки в корне диска (библиотеки документов). Все, что я нахожу, уже предполагает какую-то папку по умолчанию. Для примеров POST, представленных в документации MS, требуется идентификатор родительского элемента. Я пробовал много перестановок синтаксиса POST.

Ни один из них не работает:

  • 'https://graph.microsoft.com/v1.0/drives/{идентификатор_диска}'
  • 'https://graph.microsoft.com/v1.0/drives/{идентификатор_диска}/root:/'
  • 'https://graph.microsoft.com/v1.0/drives/{drive_id}/root:/children'

Это то, что я использую для создания папок ниже корня библиотеки документов:

folder_path = 'https://graph.microsoft.com/v1.0/drives/{drive_id}/items/{parent_item_id}/children'
folder_path_values = folder_path.format(drive_id=driveid, parent_item_id=parentid)

Вот код, который я использую для отправки запроса, который не работает:

# Some code to get the access_token and the API permissions we have are Files.ReadWrite.All and Sites.ReadWrite.All

driveid = 'b!qyL8-Uu96Uud....JR4eRG9FpH-Z5'
name = 'Drafts'
headers = {'Authorization': 'Bearer ' + access_token}

folder_path = 'https://graph.microsoft.com/v1.0/drives/{drive_id}'
folder_path_values = folder_path.format(drive_id=driveid)

new_folder = {
   "name": name,
   "folder": {},
   "@microsoft.graph.conflictBehavior": "replace"
}

res = requests.post(folder_path_values, json=new_folder, headers=headers)

Это дает мне ошибку 400 - я не могу понять правильный синтаксис для создания новой папки (диска) в корне библиотеки документов.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите создать папку под корнем, то вы можете использовать PATCH

PATCH /drives/id/root:/drafts
{
    "folder": {},
    "@microsoft.graph.conflictBehavior": "fail"
}

Код

driveid = 'b!qyL8-Uu96Uud....JR4eRG9FpH-Z5'
name = 'Drafts'
headers = {'Authorization': 'Bearer ' + access_token}

folder_path = 'https://graph.microsoft.com/v1.0/drives/{drive_id}/root:/'+name
folder_path_values = folder_path.format(drive_id=driveid)

new_folder = {
   "folder": {},
   "@microsoft.graph.conflictBehavior": "replace"
}

res = requests.patch(folder_path_values, json=new_folder, headers=headers)

Если вы хотите иметь другую папку на том же уровне, что и root, то это невозможно, потому что на диске может быть только одна самая верхняя папка.

Это сделало трюк! Спасибо. Я часами искал это решение. Я закончил с folder_path = 'graph.microsoft.com/v1.0/drives{drive_id}/root:/{folder_name‌​e}', но в остальном закодировал точно так, как вы предложили, и это сработало.

Cord 03.11.2022 22:25

Другие вопросы по теме