Desenvolvimento Web

Como Criar um Sistema de Controle Financeiro Para Pequenas Empresas com Google Sheets e Python

Como Criar um Sistema de Controle Financeiro Para Pequenas Empresas com Google Sheets e Python

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

  1. Acesse console.cloud.google.com
  2. Crie um novo projeto
  3. Habilite as APIs: Google Sheets API e Google Drive API
  4. Crie uma Service Account (Credenciais → Conta de serviço)
  5. Baixe o arquivo JSON da chave da service account
  6. 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.

Resposta rápida Orçamento sem compromisso +100 projetos entregues
Compartilhar: