Muitas pequenas empresas ainda controlam suas finanças em planilhas manuais que viram uma bagunça com o tempo. Com Google Sheets integrado ao Python via API, é possível criar um sistema de controle financeiro profissional, automatizado e acessível de qualquer lugar — sem precisar de um ERP caro.
O que você vai construir
Um sistema com:
- Lançamento de receitas e despesas com categorias
- Cálculo automático de fluxo de caixa
- Dashboard com indicadores (saldo, receita do mês, despesas, margem)
- Alertas automáticos quando o saldo estiver abaixo do mínimo
- Relatório mensal gerado e enviado por e-mail automaticamente
Pré-requisitos técnicos
- Python 3.8+
- Conta Google com Google Sheets
- Projeto no Google Cloud Console com a API Sheets habilitada
- Bibliotecas:
pip install gspread google-auth pandas
Configurando o acesso à API do Google Sheets
- Acesse console.cloud.google.com
- Crie um novo projeto
- Habilite as APIs: Google Sheets API e Google Drive API
- Crie uma Service Account (Credenciais → Conta de serviço)
- Baixe o arquivo JSON da chave da service account
- Compartilhe a planilha com o e-mail da service account
Estrutura da planilha
Crie uma planilha com as seguintes abas:
- Lançamentos: Data | Tipo (Receita/Despesa) | Categoria | Descrição | Valor | Observação
- Dashboard: indicadores calculados automaticamente
- Categorias: lista de categorias configuráveis
Código Python para integrar com a planilha
import gspread
from google.oauth2.service_account import Credentials
import pandas as pd
from datetime import datetime
# Configuração
SCOPES = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
PLANILHA_ID = 'SEU_ID_DA_PLANILHA_AQUI' # da URL da planilha
def conectar():
creds = Credentials.from_service_account_file(
'credenciais_google.json', scopes=SCOPES
)
gc = gspread.authorize(creds)
return gc.open_by_key(PLANILHA_ID)
def lancar_transacao(tipo, categoria, descricao, valor):
"""Adiciona um lançamento na planilha."""
sh = conectar()
aba = sh.worksheet('Lançamentos')
nova_linha = [
datetime.today().strftime('%d/%m/%Y'),
tipo, # 'Receita' ou 'Despesa'
categoria,
descricao,
valor,
''
]
aba.append_row(nova_linha)
print(f"✓ Lançamento registrado: {tipo} - {descricao} - R$ {valor:,.2f}")
def gerar_relatorio_mensal(mes, ano):
"""Gera resumo do mês especificado."""
sh = conectar()
aba = sh.worksheet('Lançamentos')
dados = aba.get_all_records()
df = pd.DataFrame(dados)
# Filtra o mês
df['Data'] = pd.to_datetime(df['Data'], format='%d/%m/%Y')
df_mes = df[(df['Data'].dt.month == mes) & (df['Data'].dt.year == ano)]
receitas = df_mes[df_mes['Tipo'] == 'Receita']['Valor'].sum()
despesas = df_mes[df_mes['Tipo'] == 'Despesa']['Valor'].sum()
resultado = receitas - despesas
print(f"n=== RELATÓRIO {mes:02d}/{ano} ===")
print(f"Receitas: R$ {receitas:>12,.2f}")
print(f"Despesas: R$ {despesas:>12,.2f}")
print(f"Resultado: R$ {resultado:>12,.2f}")
print(f"Margem: {resultado/receitas*100 if receitas > 0 else 0:>11.1f}%")
print("nDespesas por categoria:")
cat_desp = df_mes[df_mes['Tipo'] == 'Despesa'].groupby('Categoria')['Valor'].sum()
for cat, val in cat_desp.sort_values(ascending=False).items():
print(f" {cat:10,.2f}")
return {'receitas': receitas, 'despesas': despesas, 'resultado': resultado}
# Exemplos de uso
lancar_transacao('Receita', 'Vendas', 'Venda contrato cliente A', 5000)
lancar_transacao('Despesa', 'Pessoal', 'Salário João', 3500)
lancar_transacao('Despesa', 'Aluguel', 'Aluguel escritório janeiro', 1800)
gerar_relatorio_mensal(1, 2026)
Automatizando com agendamento
No Windows, use o Agendador de Tarefas. No Linux/Mac, use cron:
# Executa o relatório todo dia 1 às 8h
# crontab -e
0 8 1 * * python /caminho/para/relatorio_financeiro.py
No Windows (Task Scheduler), crie uma tarefa que execute:
python C:sistemasrelatorio_financeiro.py
Próximas evoluções do sistema
- Envio automático do relatório por e-mail com Python (smtplib)
- Alertas no WhatsApp quando saldo abaixo do mínimo (via Twilio API)
- Importação automática de extrato bancário (Open Finance)
- Dashboard visual com Streamlit (interface web gratuita)
- Previsão de fluxo de caixa com regressão linear (scikit-learn)
Este sistema, uma vez construído, tem custo próximo de zero e pode ser expandido conforme as necessidades do negócio evoluem — uma vantagem que nenhum SaaS pronto consegue oferecer.
Tem um projeto em mente?
Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.