Este projeto automatiza a extração de dados do Oracle, geração de planilhas Excel e sincronização com o Google Sheets, usando um container Docker gerenciado via docker-compose.
- Extração de dados Oracle: consulta categorias definidas em
MV_PRODUCTOS. - Geração de planilha única: cria
Produtos.xlsxconsolidado. - Atualização no Google Sheets:
- Atualiza apenas preços que mudaram.
- Adiciona novos produtos com colunas extras (
CORRIGIDO_IA,REVISADO,DESCRIPCION_ANTIGA). - Remove produtos que não estão mais no Excel.
- Execução automatizada com cron (duas vezes ao dia).
- Empacotado via Docker + Docker Compose.
- Docker e Docker Compose instalados
- Baixar manualmente o arquivo:
instantclient-basiclite-linux.x64-21.18.0.0.0dbru.zip
Coloque na raiz do projeto antes de rodar o build. - Credenciais do Google:
- Baixe a conta de serviço e salve como
credentials-google.json
- Baixe a conta de serviço e salve como
version: '3.9'services: exportar-planilha-google: build: . container_name: exportar-planilha-google volumes: - .:/app working_dir: /app command: cron -f restart: unless-stopped networks: - rede-exportar-planilha
networks: rede-exportar-planilha: driver: bridge
docker-compose builddocker-compose up -dO cron interno cuidará da execução automática.
O container executa o script principal automaticamente nos horários:
0 8 * * * /usr/local/bin/python3 /app/main-gerar-alterar-planilha.py
0 14 * * * /usr/local/bin/python3 /app/main-gerar-alterar-planilha.py
gerar-planilha.py: extrai dados do Oracle e cria o Excelatualizar-planilha.py: atualiza, adiciona e remove dados no Google Sheetsmain-gerar-alterar-planilha.py: executa os dois scripts em sequênciaDockerfile: configura o ambiente com Oracle Client, cron e dependências Pythoncrontab.txt: define os horários do cron
- Oracle (em
gerar-planilha.py):db_host = "ip-do-servidor" db_port = 12345 db_user = "user" db_pass = "password" db_database = "db_name" - Google Sheets (em
atualizar-planilha.py):spreadsheet_id = 'id-da-planilha-encontrado-no-link'
credentials-google.jsonestá no.gitignore(não deve ser versionado)- Planilhas e credenciais não devem ser expostas publicamente
- Recomenda-se usar variáveis de ambiente ou arquivo
.envpara configurações sensíveis
Este projeto é modular e pode ser adaptado para diferentes bancos e planilhas. Ideal para sincronização de dados internos com planilhas acessíveis por outros sistemas ou bots.