¡Hola!
Tengo problemas para descargar un archivo de SharePoint con la última versión 2.2.1 de Office365. Cuando intento descargar un archivo, aparece un error "MissingSchema" del módulo de solicitudes. No sé qué pasó, si vuelvo a la versión 2.1.5 el código funciona bien. Muchas gracias y aprecio el arduo trabajo en este módulo; super util!
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File
def auth(username, password):
ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
ctx = ClientContext(url, ctx_auth)
return ctx
ctx = auth(username, password)
response = File.open_binary(ctx, relative_url)
Error:
MissingSchema: Invalid URL "<bound method ClientContext.service_root_url of <office365.sharepoint.client_context.ClientContext object at 0x7fb4e44c3d90>>web/getfilebyserverrelativeurl('MYRELATIVEURL')/\\$value": No schema supplied. Perhaps you meant http://<bound method ClientContext.service_root_url of <office365.sharepoint.client_context.ClientContext object at 0x7fb4e44c3d90>>web/getfilebyserverrelativeurl('MYRELATIVEURL')/\$value?
Usando MacOS,
Office365 2.2.1,
Python 3.8.3,
solicitudes 2.2.4
Hay un error en la versión 2.2.1 que necesita usar la última versión de git o solucionarlo manualmente en su instalación aquí https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint /files/file.py#L275
Tenga en cuenta que en su versión ctx.service_root_url
es una propiedad pero debería ser un método ctx.service_root_url()
Gracias @efremovd y @etiennecelery por detectarlo y localizarlo, de hecho es un error y se encuentra en la versión 2.2.1
debido a la refactorización de la propiedad service_root_url
en el método.
Como se mencionó, la versión _latest_ disponible en GitHub resuelve este problema:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
Alternativamente, el archivo se puede descargar como se muestra a continuación:
file_url = '{server-relative-path-to-download}'
with open(download_path, "wb") as local_file:
file = ctx.web.get_file_by_server_relative_url(file_url).download(local_file).execute_query()
¡¡Gracias!! Buen trabajo
El cierre de este desde entonces se ha resuelto y se ha lanzado la versión 2.2.2
.
Comentario más útil
Hay un error en la versión 2.2.1 que necesita usar la última versión de git o solucionarlo manualmente en su instalación aquí https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint /files/file.py#L275
Tenga en cuenta que en su versión
ctx.service_root_url
es una propiedad pero debería ser un métodoctx.service_root_url()