Oi!
Estou tendo problemas para baixar um arquivo do SharePoint usando a versão 2.2.1 mais recente do Office365. Quando tento baixar um arquivo, aparece um erro "MissingSchema" no módulo de solicitações. Não sei o que aconteceu, se eu voltar para a versão 2.1.5 o código funciona bem. Muito obrigado e aprecio o trabalho árduo neste módulo; super útil!
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)
Erro:
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,
pedidos 2.2.4
Há um bug na versão 2.2.1 que você precisa usar o último do git ou corrigi-lo manualmente em sua instalação aqui https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint /files/file.py#L275
Observe que em sua versão ctx.service_root_url
é uma propriedade, mas deve ser um método ctx.service_root_url()
Obrigado @efremovd e @etiennecelery por capturá-lo e localizá-lo; na verdade, é um bug e foi encontrado na versão 2.2.1
devido à refatoração da propriedade service_root_url
para o método.
Como foi mencionado, a versão _mais recente_ disponível no GitHub resolve esse problema:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
Alternativamente, o arquivo pode ser baixado conforme demonstrado abaixo:
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()
Obrigado!! Ótimo trabalho
Fechar este já foi resolvido e a versão 2.2.2
foi lançada.
Comentários muito úteis
Há um bug na versão 2.2.1 que você precisa usar o último do git ou corrigi-lo manualmente em sua instalação aqui https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint /files/file.py#L275
Observe que em sua versão
ctx.service_root_url
é uma propriedade, mas deve ser um métodoctx.service_root_url()