Создайте документ с помощью SharePoint Rest API на Python

#python #sharepoint #office365 #sharepoint-online #csom

Вопрос:

Фон

Мне нужно использовать API CSOM SharePoint для создания документа в SharePoint на основе шаблона. Мне нужно, чтобы тип возврата содержал сведения о недавно созданном документе/элементе диска/элементе списка. Решение на Python было бы отличным, но мне должно хватить только рабочей конечной точки, чтобы разобраться во всем остальном.

Я использую пакет Office365-REST-Python-Клиент для обработки взаимодействий с API

Проблема

Я хотел бы использовать функцию CreateDocumentFromTemplate, так как она имеет возвращаемый тип элемента списка. У меня возникли проблемы с параметром TargetFolder типа SP.Папка. Независимо от того, что я помещаю в параметр TargetFolder, я всегда получаю следующее сообщение об ошибке при попытке выполнить эту функцию,

«Метод CreateDocumentFromTemplate не может быть вызван, так как его параметр TargetFolder не поддерживается»

Означает ли это, что параметр устарел, и, следовательно, функция не может быть вызвана? Или я просто неправильно его использую?

Попытки Решения

Я попробовал объект SP.Folder, путь к папке, URL-адрес папки, но безуспешно. И я действительно пытаюсь создать файл только в корневой папке библиотеки документов, так что это должно быть довольно просто.

Приведенный ниже код получает объект SP.Folder из другой конечной точки и передает его в запрос createDocument. Выполнение этого дает мне сообщение об ошибке, приведенное выше в ответе

 request1 = RequestOptions("{0}/_api/web/GetFolderByServerRelativeUrl('Shared Documents')".format(site_url))
folder = json.loads(ctx.execute_request_direct(request1).content)

request = RequestOptions("{0}/_api/lists/GetByTitle('Documents')/CreateDocumentFromTemplate".format(site_url))
request.data = {"fileName": "", "targetFolder": folder, "templateUrl": template_url}
response = ctx.execute_request_direct(request)
 

Текущий Обходной путь

Я могу создать документ на основе шаблона с помощью CreateDocumentAndGetEditLink, однако это возвращает только ссылку для редактирования, которая мне не полезна. Я обнюхал вызовы API, которые SharePoint выполняет в инструментах разработки Chrome, и похоже, что это функция, которая вызывается при создании документа из шаблона типа контента.