- Gerar link
- X
- Outros aplicativos
- Gerar link
- X
- Outros aplicativos
Como Automatizar suas Finanças Pessoais com Google Sheets e Python
Tempo de leitura: 8 minutos
Obs: Este é o primeiro artigo da nova fase do blog, agora focado em finanças e automação para desenvolvedores.
Manter o controle das finanças pessoais pode ser uma tarefa tediosa e repetitiva. Que tal automatizar uma parte ou até todo o processo, tendo suas receitas, investimentos e gastos atualizados automaticamente? Neste guia prático, iremos mostrar como criar uma planilha atualizada automaticamente usando Google Sheets e Python. O tutorial apresenta uma planilha básica que você poderá melhorar à medida que ganha experiência.
![]() |
| Fonte: https://br.freepik.com |
💡 Dica: Este guia assume que você tem conhecimentos básicos de Python e planilhas. Mesmo sem experiência avançada, você conseguirá seguir os passos!
Por que Automatizar suas Finanças?
- Economia de tempo: Chega de digitar extrato por extrato
- Visão em tempo real: Dados sempre atualizados
- Tomada de decisão: Informações precisas para investir melhor
- Controle de gastos: Alertas automáticos quando ultrapassar orçamentos
Pré-requisitos
- Conta no Google e credenciais no Google Cloud
- Python e bibliotecas instaladas
- Conhecimento básico de planilhas e programação
Passo a Passo da Automação
1. Estruturando sua Planilha no Google Sheets
Crie uma planilha com as seguintes abas:
📊 Dashboard Principal
Saldo Atual: R$
Receita do Mês: R$
Despesas do Mês: R$
Investimentos: R$
Receita do Mês: R$
Despesas do Mês: R$
Investimentos: R$
💳 Transações (com as seguintes colunas)
| Data | Descrição | Categoria | Valor | Tipo |
|---|---|---|---|---|
📈 Investimentos (com as seguintes colunas)
| Ativo | Quantidade | Preço Médio | Preço Atual | Valor Investido |
|---|---|---|---|---|
2. Ativar APIs do Google Drive e Google Sheets e obter credenciais
O primeiro passo aqui, após logar na sua conta Google, consiste em acessar o Google Cloud e clicar em Console no canto superior direito.
![]() |
| Botão Console no Google Cloud |
Em seguida clique no menu e na opção APIs e serviços ou use os botões de acesso rápido. Clique então em Biblioteca no menu e ative Google Drive API e Google Sheets API.
![]() |
| Botão APIs e serviços |
Finalmente, ainda na opção APIs e serviços, vá em Credenciais. Se você já tiver uma conta de serviço, clique no e-mail visível no grupo Contas de serviço, a fim de criar uma chave. Se não, clique em + Criar credenciais e Conta de serviço para criar uma.
![]() |
| Contas de serviço |
Depois que visualizar a Conta de serviço, clique em Chave e em Adicionar chave. Selecione Criar nova chave, deixe marcado JSON e clique em Criar. Salve o arquivo JSON numa pasta segura no seu computador, dê um nome a ele, por exemplo credenciais.json. Em seguida copie o e-mail na chave client_email do JSON salvo. Ele será usado para compartilhar a planilha no Google Sheets.
![]() |
| Criar uma chave na Conta de serviço |
3. Conectando a API do Google Sheets
Primeiramente, instale as bibliotecas que serão usadas no código Python:
pip install gspread pandas google-auth yfinance
Em seguida, escreva a função responsável por fazer a conexão com a API do Goolge Sheets. Note que utilizamos o arquivo credenciais.json que foi obtido na seção anterior:
automatizar_financas.py
import gspread import pandas as pd from google.oauth2.service_account import Credentials def conectar_google_sheets(): scopes = [ "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive", ] creds = Credentials.from_service_account_file( "credenciais.json", scopes=scopes) client = gspread.authorize(creds) return client
4. Script para Atualizar Transações Bancárias
Aqui é necessário obter um extrato da sua conta por meio do aplicativo do banco. Após a solicitação você irá receber um e-mail com o extrato em três formatos: PDF, CSV e OFX. Nós iremos utilizar o formato CSV. Dois pontos merecem atenção:
a) Não existe uma estrutura padrão. Cada banco usa nomes de campos diferentes e posições diferentes no arquivo;
b) Pode ser necessário fazer uma limpeza (preparação dos dados) antes de fazer a importação. Checamos isso em dois bancos: Nubank e Inter. Nubank envia um extrato onde os campos são separados por vírgula e o Inter usa ponto e vírgula como separador, além de precisar deletar algumas linhas no início do arquivo.
No nosso exemplo usaremos um extrato obtido do banco Inter, usando o seguinte código:
automatizar_financas.py
import gspread import pandas as pd from google.oauth2.service_account import Credentials # Código anterior vai aqui def importar_extrato_csv(arquivo_csv, worksheet): df = pd.read_csv( arquivo_csv, sep=";", decimal=",", encoding="utf-8", on_bad_lines="skip", ) for _, row in df.iterrows(): worksheet.append_row( [ row["Data Lançamento"], row["Histórico"] + " " + row["Descrição"], "", float(row["Valor"].replace(".", "").replace(",", ".")), 0, ] )
A função lê o CSV e o converte em um DataFrame, o qual é precorrido e cada uma de suas linhas é adicionado à planilha Google. Os nomes das colunas no DataFrame são definidos pelo CSV fornecido pelo banco Inter. Para um outro banco esses nomes podem ser diferentes.
Juntando essas duas funções com o trecho que vai executar:
automatizar_financas.py
import gspread import pandas as pd from google.oauth2.service_account import Credentials def conectar_google_sheets(): scopes = [ "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive", ] creds = Credentials.from_service_account_file( "credenciais.json", scopes=scopes) client = gspread.authorize(creds) return client def importar_extrato_csv(arquivo_csv, worksheet): df = pd.read_csv( arquivo_csv, sep=";", decimal=",", encoding="utf-8", on_bad_lines="skip", ) for _, row in df.iterrows(): worksheet.append_row( [ row["Data Lançamento"], row["Histórico"] + " " + row["Descrição"], "", float(row["Valor"].replace(".", "").replace(",", ".")), ( "Receita" if float( row["Valor"].replace(".", "").replace(",", ".") ) >= 0 else "Despesa" ), ] ) if __name__ == "__main__": # Conectar à planilha client = conectar_google_sheets() # Abrir a planilha e a aba desejada (case sensitive) planilha = client.open("Minhas Finanças Pessoais") sheet = planilha.worksheet("Transações") # Importar o extrato CSV para a aba especificada importar_extrato_csv( "./extratos/Extrato-30-09-2025-a-30-10-2025-CSV.csv", sheet) print("Importação concluída com sucesso!")
5. Atualizando Preços de Investimentos
investimentos.py
from automatizar_financas import conectar_google_sheets import yfinance as yf def atualizar_investimentos(): client = conectar_google_sheets() planilha = client.open("Minhas Finanças Pessoais") worksheet = planilha.worksheet("Investimentos") # Obter dados atualizados investimentos = worksheet.get_all_records() for i, investimento in enumerate(investimentos, start=2): ticker = investimento['Ativo'] preco_atual = obter_preco_atual(ticker) # Atualizar preço atual worksheet.update_cell(i, 4, preco_atual) # Calcular e atualizar valor total quantidade = investimento['Quantidade'] valor_total = quantidade * preco_atual worksheet.update_cell(i, 5, valor_total) def obter_preco_atual(ticker): # Exemplo com API do Yahoo Finance ticker_yf = yf.Ticker(ticker + ".SA") info = ticker_yf.info return info.get('regularMarketPrice', 0.0) if __name__ == "__main__": atualizar_investimentos() print("Atualização de investimentos concluída com sucesso!")
Neste módulo utilizamos o pacote yfinance para obter dados das ações, neste caso, o preço atual. O código lê da planilha Investimentos, cada ação, busca seu preço atual e atualiza os valores das células de preço e valor total.
6. Dashboard Automático com Fórmulas
A fim de que os dados sejam resumidos, no Google Sheets, use estas fórmulas na aba Dashboard:
Saldo Atual:
=SOMA(Transações!D:D)
Receita do Mês:
=SOMA(FILTER('Transações'!D2:D; 'Transações'!E2:E="Receita"; MÊS('Transações'!A2:A)=HOJE()))
Despesas do Mês:
=SOMA(FILTER('Transações'!D2:D; 'Transações'!E2:E="Receita"; MÊS('Transações'!A2:A)=HOJE()))Investimentos:
=SOMA(Investimentos!E:E)
7. Agendando a Execução Automática
Visto que a obtenção do extrato bancário não pode ser automatizada, se agendarmos a atualização das transações bancárias, será necessário que você solicite o extrato antes que a tarefa agenda aconteça. Desse modo vamos mostrar apenas o agendamento da atualização dos investimentos. De toda maneira, com poucas alterações podemos incluir o agendamento das transações.
agendamento.py
import schedule import time from datetime import datetime from investimentos import atualizar_investimentos def rotina_diaria(): atualizar_investimentos() print(f"Planilha atualizada em {datetime.now()}") # Agendar execução diária às 18:00 schedule.every().day.at("09:27").do(rotina_diaria) while True: schedule.run_pending() time.sleep(1)
Dicas para Personalizar
- Adapte às suas necessidades: Adicione categorias específicas do seu estilo de vida
- Múltiplas fontes: Conecte com diferentes bancos e corretoras
- Backup automático: Configure backup semanal da planilha
- Segurança: Mantenha suas credenciais em ambiente seguro
🚀 Próximos Passos:
- Adicione gráficos automáticos no Google Sheets
- Crie alertas por email
- Crie relatórios mensais por email
- Integre com Telegram para notificações
- Adicione previsões de gastos com machine learning
Conclusão
Com essa automação, você terá suas finanças sempre organizadas e atualizadas, podendo focar no que realmente importa: tomar decisões inteligentes com seu dinheiro.
💡 Dica final: Comece simples e vá incrementando aos
poucos. O importante é dar o primeiro passo rumo à liberdade financeira!
Espero que este guia tenha sido útil! Se tiver dúvidas ou sugestões, deixe nos comentários.
Compartilhe suas dúvidas, implementações e experiências!
- Gerar link
- X
- Outros aplicativos





Comentários