Saltar a contenido

Microsoft 365 - OneDrive

Interactúa y realiza diversas operaciones a través de una cuenta de Microsoft 365. Descarga, carga y administra archivos fácilmente mediante el complemento de BotCity para OneDrive.

Warning

Para poder utilizar este complemento, necesitas tener una cuenta de Microsoft 365 con un proyecto creado y configurado correctamente.

Después de crear un proyecto, debes completar el proceso de autenticación a través del complemento de Credenciales de Microsoft 365.

Para más detalles, consulta las secciones anteriores:

Instalación

pip install botcity-ms365-onedrive-plugin

Importando el Complemento

Después de instalar este paquete, el siguiente paso es importar el paquete en tu código y comenzar a utilizar las funciones.

from botcity.plugins.ms365.onedrive import MS365OneDrivePlugin

Configurando la cuenta de servicio

Como se mencionó anteriormente, para utilizar el complemento de OneDrive, es necesario realizar el proceso de autenticación de la cuenta a través del complemento de Credenciales de Microsoft 365.

Con la instancia del complemento de credenciales obtenida, vamos a utilizarla para instanciar el complemento de OneDrive.

from botcity.plugins.ms365.credentials import MS365CredentialsPlugin, Scopes
from botcity.plugins.ms365.onedrive import MS365OneDrivePlugin

# Instantiate the Credentials plugin
service = MS365CredentialsPlugin(
    client_id='<APPLICATION ID>',
    client_secret='<SECRET VALUE>',
)
service.authenticate(scopes=[Scopes.BASIC, Scopes.FILES_READ_WRITE_ALL])

# Instantiate the OneDrive plugin
onedrive = MS365OneDrivePlugin(service_account=service)

Tip

Para utilizar el servicio de OneDrive, solo debes agregar el ámbito Scopes.FILES_READ_WRITE_ALL que se refiere al permiso Files.ReadWrite.All del proyecto.

Consulta más detalles sobre ámbitos y permisos en este enlace.

Obteniendo algunos archivos

Puedes obtener una lista de archivos almacenados en la unidad. Es posible obtener los archivos desde la carpeta raíz o desde una carpeta principal específica.

Con los archivos devueltos, puedes realizar operaciones como descargar y acceder a propiedades específicas.

onedrive = MS365OneDrivePlugin(service_account=service)

# Getting the files and folders from the root folder
drive_files = onedrive.get_files()

for file in drive_files:
    print(file.name)

Utilizando una carpeta específica como referencia, vamos a pasar la ruta de la carpeta en la unidad como parámetro.

Tip

La ruta debe seguir el patrón: /ruta/a/carpeta_principal.

El primer / significa que estamos comenzando desde la carpeta raíz y el resto de la ruta será la "ruta absoluta" del elemento en la unidad.

onedrive = MS365OneDrivePlugin(service_account=service)

# Getting files from parent folder 'subfolder'
drive_items = onedrive.get_files_from_parent_folder(folder_path="/myFolder/subFolder")

for item in drive_items:
    if item.is_file:
        item.download()

Buscando archivos específicos

Además de obtener varios archivos, también es posible filtrar para devolver solo un archivo específico.

En este caso, podemos buscar un elemento en la unidad por su nombre o utilizando su ruta absoluta.

onedrive = MS365OneDrivePlugin(service_account=service)

# Returning the first file that matches this name
file = onedrive.get_file_by_name(file_name="credentials.txt")
print(file)

# Getting file by path. Using path in pattern: '/path/to/file'
file_by_path = onedrive.get_file_by_path("/myFolder/subFolder/document.pdf")
print(file_by_path)

Cargando archivos

Podemos cargar fácilmente un nuevo archivo en OneDrive pasando la ruta local y la ruta donde se almacenará el archivo.

Si no se pasa una ruta específica, el archivo se guardará en la carpeta raíz de la unidad.

onedrive = MS365OneDrivePlugin(service_account=service)

# Uploading file
onedrive.upload_file(
    local_file_path="C:\Downloads\image.png",
    destination_folder_path="/myFolder/subFolder"
)

Descargando archivos

Además de descargar archivos directamente a través de los objetos devueltos por los métodos get_files(), también podemos descargar un archivo directamente pasando su ruta en la unidad.

onedrive = MS365OneDrivePlugin(service_account=service)

# Downloading file
onedrive.download_file(
    file_path="/myFolder/test.txt",
    to_path=".\downloaded_files"
)

Eliminando archivos

Como en los ejemplos anteriores, utilizando la ruta del archivo en la unidad podemos eliminar un archivo específico.

onedrive = MS365OneDrivePlugin(service_account=service)

# Deleting file
onedrive.delete_file(file_path="/myFolder/subFolder/document.pdf")

Creando una nueva carpeta

Podemos crear fácilmente una nueva carpeta en la unidad. La carpeta se puede crear en la carpeta raíz de la unidad o en una ruta específica.

onedrive = MS365OneDrivePlugin(service_account=service)

# Creating a new folder
onedrive.create_folder(folder_name="mySubFolder", create_on_path="/myFolders")

Administrando archivos a través de Sharepoint

Podemos realizar las mismas operaciones con archivos y carpetas utilizando la unidad de un sitio de Sharepoint como referencia.

Consulta más detalles sobre la configuración requerida en la documentación del complemento de Sharepoint.