Ir para o conteúdo

Microsoft 365 - OneDrive

Interaja e execute várias operações por meio de uma conta do Microsoft 365. Baixe, carregue e gerencie arquivos facilmente através do plugin BotCity para o OneDrive.

Aviso

Para poder usar este plugin, você precisa ter uma conta do Microsoft 365 com um projeto criado e configurado corretamente.

Depois de criar um projeto, você precisa concluir o processo de autenticação por meio do plugin Microsoft 365 Credentials.

Para mais detalhes, consulte as seções anteriores:

Instalação

pip install botcity-ms365-onedrive-plugin

Importando o Plugin

Depois de instalar este pacote, a próxima etapa é importar o pacote no seu código e começar a usar as funções.

from botcity.plugins.ms365.onedrive import MS365OneDrivePlugin

Configurando a conta de serviço

Conforme mencionado acima, para usar o plugin do OneDrive, é necessário realizar o processo de autenticação da conta por meio do plugin Microsoft 365 Credentials.

Com a instância do plugin de credenciais obtida, vamos usá-la para instanciar o plugin do OneDrive.

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

# Instanciando o plugin de Credenciais
service = MS365CredentialsPlugin(
    client_id='<APPLICATION ID>',
    client_secret='<SECRET VALUE>',
)
service.authenticate(scopes=[Scopes.BASIC, Scopes.FILES_READ_WRITE_ALL])

# Instanciando o plugin do OneDrive
onedrive = MS365OneDrivePlugin(service_account=service)

Dica

Para utilizar o serviço do OneDrive, basta adicionar o escopo Scopes.FILES_READ_WRITE_ALL referente à permissão Files.ReadWrite.All do projeto.

Veja mais detalhes sobre escopos e permissões nesse link.

Obtendo alguns arquivos

Você pode obter uma lista de arquivos armazenados no drive. É possível obter os arquivos da pasta raiz ou de uma pasta pai específica.

Com os arquivos retornados, você pode realizar operações como download e também acessar algumas propriedades específicas.

onedrive = MS365OneDrivePlugin(service_account=service)

# Obtendo os arquivos e pastas da pasta raiz
drive_files = onedrive.get_files()

for file in drive_files:
    print(file.name)

Usando uma pasta específica como referência, vamos passar o caminho da pasta no drive como parâmetro.

Dica

O caminho deve seguir o padrão: /caminho/da/pasta_pai.

A primeira / significa que estamos iniciando na pasta raiz e o restante do caminho será o "caminho absoluto" do item no drive.

onedrive = MS365OneDrivePlugin(service_account=service)

# Obtendo arquivos da pasta pai 'subFolder'
drive_items = onedrive.get_files_from_parent_folder(folder_path="/myFolder/subFolder")

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

Procurando por arquivos específicos

Além de obter vários arquivos, também é possível filtrar para retornar apenas um arquivo específico.

Nesse caso, podemos procurar um item no drive pelo nome ou usando seu caminho absoluto.

onedrive = MS365OneDrivePlugin(service_account=service)

# Retornando o primeiro arquivo que corresponde a este nome
file = onedrive.get_file_by_name(file_name="credentials.txt")
print(file)

# Obtendo arquivo pelo caminho. Usando padrão: '/caminho/para/arquivo'
file_by_path = onedrive.get_file_by_path("/myFolder/subFolder/document.pdf")
print(file_by_path)

Carregando arquivos

Podemos facilmente carregar um novo arquivo no OneDrive passando o caminho local e o caminho onde o arquivo será armazenado.

Se nenhum caminho específico for passado, o arquivo será salvo na pasta raiz do drive.

onedrive = MS365OneDrivePlugin(service_account=service)

# Fazendo o upload do arquivo
onedrive.upload_file(
    local_file_path="C:\Downloads\image.png",
    destination_folder_path="/myFolder/subFolder"
)

Baixando arquivos

Além de baixar arquivos diretamente através dos objetos retornados pelos métodos get_files(), também podemos baixar um arquivo diretamente passando seu caminho no drive.

onedrive = MS365OneDrivePlugin(service_account=service)

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

Excluindo arquivos

Como nos exemplos acima, usando o caminho do arquivo no drive podemos deletar um arquivo específico.

onedrive = MS365OneDrivePlugin(service_account=service)

# Deletando arquivo
onedrive.delete_file(file_path="/myFolder/subFolder/document.pdf")

Criando uma nova pasta

Podemos criar facilmente uma nova pasta no OneDrive. A pasta pode ser criada na pasta raiz do drive ou em um caminho específico.

onedrive = MS365OneDrivePlugin(service_account=service)

# Criando uma nova pasta
onedrive.create_folder(folder_name="mySubFolder", create_on_path="/myFolders")

Gerenciando arquivos através do Sharepoint

Podemos realizar as mesmas operações com arquivos e pastas utilizando como referência o drive de um site do Sharepoint.

Veja mais detalhes sobre a configuração necessária na documentação do plugin do Sharepoint.