Buscar arquivo mais recente no Google Drive com Python

Foto do autor
Sávio Ribeiro 📅 14/05/2026 07:30
⏱️8 minutos de leitura

Se você trabalha com análise de dados, automação ou até mesmo engenharia de dados, provavelmente lida com uma rotina clássica: todos os dias (ou semanas), um novo relatório em formato .csv é salvo em uma pasta específica do Google Drive.

A pergunta que surge é: como automatizar meu script em Python para ler sempre o arquivo mais novo, sem que eu precise alterar o ID do arquivo manualmente no código todos os dias?

Como especialista em dados, garanto que ficar copiando e colando IDs de arquivos não é interessante. Neste artigo, vou te ensinar a criar um código simples, mas inteligente no Google Colab que entra em uma pasta do Drive, identifica o .csv mais recente e já o transforma em um DataFrame do Pandas para você trabalhar.

Requisito: A Autenticação no Colab

Antes de buscar o arquivo, precisamos dar permissão ao Google Colab para “enxergar” o seu Google Drive.

Se você acompanha o blog da Octadata, já expliquei o conceito de autenticação segura no artigo Ler dados do Google Sheets com Python (Método 2: Acesso Seguro). Vamos usar a mesma base de segurança, mas com uma pequena adaptação: em vez de chamar o gspread (que serve para planilhas), vamos invocar a API do Google Drive.

Passo a Passo: Buscar arquivo CSV mais recente

Vamos dividir o código em partes para que você entenda exatamente o que cada linha está fazendo. A lógica aqui é simples: Autenticar > Buscar na Pasta > Ordenar por Data > Ler o Arquivo.

1. Preparando o terreno e autenticando

Copie e cole o código abaixo em uma célula do seu Google Colab. Ele vai pedir que você faça login com sua conta do Google.

from google.colab import auth
from google.auth import default
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
import pandas as pd
import io

# 1. Autenticação
auth.authenticate_user()
creds, _ = default()

# 2. Conectando a API do Google Drive
drive_service = build('drive', 'v3', credentials=creds)

2. Identificando a pasta alvo

Vá até o seu Google Drive pelo navegador, abra a pasta onde os arquivos CSV são salvos e olhe para a URL (o endereço no topo do navegador). O ID da pasta é aquele código longo que vem depois de folders/.

Veja no exemplo abaixo:

Buscar arquivo CSV mais recente no Drive

O ID é o código da área destacada em vermelho.

3. A consulta mágica: buscando o arquivo

Vamos estabelecer 3 condições para a API do Google Drive:

  1. Olhe apenas para arquivos dentro da pasta X.
  2. Traga apenas arquivos do tipo CSV.
  3. Ordene do mais novo para o mais velho e me dê apenas o primeiro resultado.

# Substitua pelo ID da sua pasta
folder_id = 'COLE_O_ID_DA_SUA_PASTA_AQUI'

# A regra de busca (apenas CSVs que não estão na lixeira)
query = f"'{folder_id}' in parents and mimeType='text/csv' and trashed=false"

# Executando a busca no Drive
results = drive_service.files().list(
    q=query,
    orderBy="createdTime desc", # O segredo de busca: "desc" significa decrescente (do mais novo pro mais velho)
    pageSize=1, # Traz apenas o TOP 1 (o mais recente)
    fields="files(id, name, createdTime)"
).execute()

items = results.get('files', [])

4. Lendo o Arquivo com Pandas

Se o arquivo for encontrado, nós precisamos baixá-lo virtualmente (na memória) e entregá-lo para a biblioteca pandas fazer a leitura. Para isso, usamos o código abaixo:

if not items:
    print('Nenhum arquivo CSV encontrado na pasta informada.')
else:
    # Pega o primeiro item da lista (o mais recente)
    latest_file = items[0]
    print(f"Arquivo mais recente encontrado: {latest_file['name']}")
    print(f"Data de criação: {latest_file['createdTime']}")

    # Fazendo o download do arquivo para a memória do Colab
    request = drive_service.files().get_media(fileId=latest_file['id'])
    downloaded = io.BytesIO()
    downloader = MediaIoBaseDownload(downloaded, request)
    
    done = False
    while done is False:
        status, done = downloader.next_chunk()

    # Retorna o "cursor" de leitura para o início do arquivo
    downloaded.seek(0)
    
    # Lendo o CSV com Pandas
    df = pd.read_csv(downloaded)
    
    # Exibe as primeiras linhas
    display(df.head())

image 4

Por que essa é a melhor abordagem?

Você poderia simplesmente “montar o drive” usando drive.mount('/content/drive'). No entanto, o método via API do Google Drive que ensinei acima é o padrão de mercado por três motivos:

  1. Robustez: Não depende do mapeamento de pastas do Colab (que às vezes fica lento ou desconecta).
  2. Precisão: O parâmetro orderBy="createdTime desc" garante a exatidão no nível do servidor do Google.
  3. Escalabilidade: Se amanhã você levar esse código para uma Cloud Function ou AWS, a lógica da API funcionará perfeitamente, o que não aconteceria com o drive.mount.

Feito! Tarefa automatizada com sucesso.

Sávio Ribeiro
Compartilho dicas sobre análise de dados, automação e programação de maneira simples e acessível, com foco especial nas ferramentas do Google Workspace. Conecte-se comigo no LinkedIn.

PARTICIPE DO NOSSO GRUPO NO WHATSAPP!
É 100% GRÁTIS!

Tópicos da publicação

Comentários