Para automatizar la tarea de listar, descargar o subir archivos en un sitio de SharePoint Online podemos usar el servicio REST de SharePoint. Este permite a los desarrolladores interactuar de forma remota con los datos de SharePoint siempre que usen un lenguaje que permita realizar solicitudes web a este servicio.
Con una simple búsqueda en la web podemos encontrar un potente cliente REST para Python que se llama Office-365-REST-Python-Client y este es el que he usado para esta tarea.
Para iniciar nuestro entorno de desarrollo el primer paso es instalar el paquete. Para ello hacemos uso del siguiente comando:
pip install Office365-REST-Python-Client
Comenzamos con nuestro script Python y preparamos la autenticación con el servicio online para ello debemos de disponer previamente de tres valores que son la URL de nuestro sitio, el USUARIO con el que accedemos al servicio online y contraseña (PASSWORD). Usaremos los que aparecen en el código a modo de ejemplo:
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
URL = 'https://misubdominio.sharepoint.com/sites/MiSitio'
USUARIO = 'miemail@misubdominio.onmicrosoft.com'
PASSWORD = 'yT=83.33'
def autenticacion():
ctx_auth = AuthenticationContext(URL)
ctx_auth.acquire_token_for_user(USUARIO, PASSWORD)
ctx = ClientContext(URL, ctx_auth)
return ctx
Con este código estamos creando una instancia de la clase AuthenticationContext() para poder autenticarnos en el sistema y para ello le pasamos como parámetro la dirección web de nuestro sitio SharePoint. Una vez creado el objeto lo usamos llamando a su método acquire_token_for_user(), indicando nuestro username y password, para que la API web nos devuelva el token que nos permitirá interactuar con el sitio. Seguidamente usamos la URL y el token para crear un objeto que haga referencia al sitio SharePoint para esto usamos ClientContext().
Y ya está, estamos preparados para comenzar a listar, descargar o subir archivos a nuestro sitio.