Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Desafio: lendo dados de outro link

import pandas as pd
import re
from datetime import datetime
import os

def extrair_id_gid(link):
    """
    Valida o link do Google Sheets e extrai ID e GID.
    Retorna (id, gid) ou (None, None) se inválido.
    """
    match = re.search(r'https://docs\.google\.com/spreadsheets/d/([^/]+)/.*[?&]gid=(\d+)', link)
    if match:
        return match.group(1), match.group(2)
    print('Link inválido.')
    return None, None

def montar_url_exportacao(id_sheet, gid):
    """
    Monta a URL para exportar a aba do Google Sheets em CSV.
    """
    return f'https://docs.google.com/spreadsheets/d/{id_sheet}/export?format=csv&gid={gid}'

def baixar_planilha(url):
    """
    Tenta baixar a planilha CSV a partir da URL.
    Retorna o DataFrame ou lança exceção.
    """
    return pd.read_csv(url)

def salvar_com_limite(df, pasta, prefixo='dados_google_sheets', limite=3):
    """
    Salva o DataFrame como CSV na pasta, com timestamp no nome.
    Mantém no máximo 'limite' arquivos na pasta, deletando os mais antigos.
    """
    os.makedirs(pasta, exist_ok=True)

    agora = datetime.now().strftime('%Y%m%d_%H%M%S')
    nome_arquivo = f'{prefixo}_{agora}.csv'
    caminho_completo = os.path.join(pasta, nome_arquivo)
    
    df.to_csv(caminho_completo, index=False)
    print(f'Arquivo salvo em: {caminho_completo}')

    # Listar arquivos existentes do prefixo
    arquivos = [f for f in os.listdir(pasta) if f.startswith(prefixo) and f.endswith('.csv')]
    # Ordenar pela data de modificação (mais antigos primeiro)
    arquivos_completos = [os.path.join(pasta, f) for f in arquivos]
    arquivos_completos.sort(key=os.path.getmtime)

    # Deletar os arquivos antigos para manter o limite
    while len(arquivos_completos) > limite:
        arquivo_para_deletar = arquivos_completos.pop(0)
        os.remove(arquivo_para_deletar)
        print(f'Arquivo antigo removido: {arquivo_para_deletar}')

def main():
    link_do_google_sheets = 'https://docs.google.com/spreadsheets/d/1pvBoLyX8kP0TjtUbadVMGdTl4yzm6bHMThhPiqCVtpw/edit?gid=1214654498'
    pasta_destino = './dados_google_sheets'
    limite_versoes = 3

    id_sheet, gid = extrair_id_gid(link_do_google_sheets)
    if not id_sheet or not gid:
        print('Operação cancelada devido a erro no link.')
        return

    url = montar_url_exportacao(id_sheet, gid)

    try:
        df_dados = baixar_planilha(url)
        salvar_com_limite(df_dados, pasta_destino, limite=limite_versoes)
    except Exception as e:
        print('Erro ao carregar ou salvar a planilha:')
        print(e)

if __name__ == '__main__':
    main()
1 resposta
solução!

Olá, Marinaldo! Como vai?

Muito bem! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Observei que você explorou o uso de expressões regulares para validar e extrair parâmetros de uma URL, utilizou muito bem o módulo os para gerenciar os arquivos locais e ainda compreendeu a importância do controle de versões com limite de arquivos para manter a pasta sempre limpa e organizada.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!