Como Integrar Cotações da B3 no Google Sheets: O Guia Definitivo
Descubra como criar uma planilha inteligente que atualiza automaticamente as cotações de ações e ETFs da B3, incluindo aqueles que não aparecem no Google Finance.
O Problema que Todo Investidor Enfrenta
Se você usa o Google Sheets para acompanhar seus investimentos, já deve ter se deparado com esse problema frustrante: muitos ETFs brasileiros simplesmente não aparecem na função GOOGLEFINANCE.
Ativos como WRLD11, IMAB11, IB5M11 e IRFM11 - fundamentais para uma carteira diversificada - ficam de fora. Você tenta usar =GOOGLEFINANCE("BVMF:IMAB11")
e recebe apenas um erro. A solução? Atualizar manualmente. Todos. Os. Dias.
Mas e se existisse uma forma de automatizar isso completamente?
A Solução: Função Personalizada com Apps Script
Vamos criar uma função personalizada chamada BRAPI_PRICE()
que busca cotações diretamente da API da brapi.dev. O melhor? É tão simples de usar quanto a função GOOGLEFINANCE
:
=BRAPI_PRICE("IMAB11"; $A$1)
Por Que Esta Solução é Melhor?
- Funciona com todos os ativos da B3 - Ações, ETFs, FIIs, BDRs e índices
- Dados confiáveis - Acesso direto aos dados oficiais da B3
- Gratuito - 15.000 requisições mensais sem custo
- Fácil de usar - Sintaxe simples e familiar
- Atualização automática - Configure e esqueça
Passo a Passo: Implementação Completa
Passo 1: Obtenha Seu Token da API
- Acesse brapi.dev
- Crie uma conta gratuita (leva menos de 1 minuto)
- No painel de usuário, copie seu token API
Importante: Guarde esse token - você vai precisar dele na planilha.
Passo 2: Adicione o Código no Apps Script
- Abra sua planilha no Google Sheets
- Clique em Extensões > Apps Script
- Apague todo o código que aparecer
- Cole o código abaixo:
/**
* Retorna o preço atual de um ticker da B3 via brapi.dev
*
* @param {string} ticker - Código do ativo (ex: "PETR4", "VALE3", "IMAB11")
* @param {string} token - Token da API brapi.dev
* @return {number} Preço atual do ativo
* @customfunction
*/
function BRAPI_PRICE(ticker, token) {
if (!ticker) return "Erro: informe ticker";
// Permite passar o token como célula ou string
if (token && typeof token === 'object' && token.length) {
token = token[0][0];
}
// Se não informar token, tenta pegar da célula A1
if (!token) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
token = sh.getRange('A1').getDisplayValue();
}
if (!token) return "Erro: token brapi.dev ausente";
// Formata o ticker
ticker = String(ticker).toUpperCase().trim();
if (ticker.indexOf('.') === -1) ticker = ticker + '.SA';
// Faz a requisição
var url = 'https://brapi.dev/api/quote/' + encodeURIComponent(ticker) +
'?token=' + encodeURIComponent(token);
var options = {
muteHttpExceptions: true,
headers: {'User-Agent': 'Mozilla/5.0'}
};
var response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() !== 200) {
return "HTTP " + response.getResponseCode() + ": " +
response.getContentText().substring(0, 200);
}
var json = JSON.parse(response.getContentText());
var result = (json && json.results && json.results[0]) || null;
if (!result) return "Sem dados retornados";
return result.regularMarketPrice || result.lastPrice ||
result.close || "Preço não encontrado";
}
- Clique em Salvar (ícone de disquete ou Ctrl+S)
- Dê um nome ao projeto (ex: "Cotações brapi")
- Feche a janela do editor
Passo 3: Configure Sua Planilha
- Na célula A1, cole seu token da API brapi.dev
- Em qualquer outra célula, use a fórmula:
=BRAPI_PRICE("PETR4"; $A$1)
Pronto! A cotação aparecerá automaticamente. 🎉
Exemplos Práticos de Uso
Ações Populares
=BRAPI_PRICE("PETR4"; $A$1) # Petrobras PN
=BRAPI_PRICE("VALE3"; $A$1) # Vale ON
=BRAPI_PRICE("ITUB4"; $A$1) # Itaú Unibanco PN
=BRAPI_PRICE("BBDC4"; $A$1) # Bradesco PN
=BRAPI_PRICE("MGLU3"; $A$1) # Magazine Luiza ON
ETFs de Renda Fixa (O Grande Diferencial!)
Estes ETFs não funcionam no Google Finance, mas funcionam perfeitamente com nossa função:
=BRAPI_PRICE("IMAB11"; $A$1) # ETF IMA-B (Tesouro IPCA+)
=BRAPI_PRICE("IB5M11"; $A$1) # ETF IMA-B 5+ (IPCA+ longo prazo)
=BRAPI_PRICE("IRFM11"; $A$1) # ETF IRF-M (Tesouro Prefixado)
=BRAPI_PRICE("B5P211"; $A$1) # ETF NTN-B Principal
ETFs Internacionais
=BRAPI_PRICE("WRLD11"; $A$1) # ETF Global (Mundo)
=BRAPI_PRICE("IVVB11"; $A$1) # ETF S&P 500
=BRAPI_PRICE("NASD11"; $A$1) # ETF Nasdaq-100
Índices e BDRs
=BRAPI_PRICE("^BVSP"; $A$1) # Índice Ibovespa
=BRAPI_PRICE("AAPL34"; $A$1) # BDR Apple
=BRAPI_PRICE("MSFT34"; $A$1) # BDR Microsoft
Função Avançada: Busque Qualquer Dado
Se você quiser mais do que apenas o preço, use esta função avançada:
/**
* Retorna dados completos de um ativo
*
* @param {string} ticker - Código do ativo
* @param {string} token - Token da API
* @param {string} field - Campo desejado (regularMarketPrice, currency, shortName, etc)
* @return {any} Valor do campo solicitado
* @customfunction
*/
function BRAPI_DATA(ticker, token, field) {
if (!ticker) return "Erro: informe ticker";
if (!field) return "Erro: informe campo";
if (token && typeof token === 'object' && token.length) {
token = token[0][0];
}
if (!token) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
token = sh.getRange('A1').getDisplayValue();
}
if (!token) return "Erro: token ausente";
ticker = String(ticker).toUpperCase().trim();
if (ticker.indexOf('.') === -1) ticker = ticker + '.SA';
var url = 'https://brapi.dev/api/quote/' + encodeURIComponent(ticker) +
'?token=' + encodeURIComponent(token);
var options = {
muteHttpExceptions: true,
headers: {'User-Agent': 'Mozilla/5.0'}
};
var response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() !== 200) {
return "Erro HTTP " + response.getResponseCode();
}
var json = JSON.parse(response.getContentText());
var result = (json && json.results && json.results[0]) || null;
if (!result) return "Sem dados";
return result[field] || "Campo não encontrado";
}
Exemplos com BRAPI_DATA:
=BRAPI_DATA("PETR4"; $A$1; "regularMarketPrice") # Preço
=BRAPI_DATA("PETR4"; $A$1; "shortName") # Nome
=BRAPI_DATA("PETR4"; $A$1; "currency") # Moeda
=BRAPI_DATA("PETR4"; $A$1; "regularMarketChange") # Variação R$
=BRAPI_DATA("PETR4"; $A$1; "regularMarketChangePercent") # Variação %
=BRAPI_DATA("PETR4"; $A$1; "marketCap") # Valor de mercado
=BRAPI_DATA("PETR4"; $A$1; "regularMarketVolume") # Volume negociado
Criando Uma Planilha Profissional
Aqui está um exemplo de como estruturar sua planilha:
A (Token) | B (Ticker) | C (Nome) | D (Preço) | E (Variação %) | F (Atualizado) |
---|---|---|---|---|---|
seu_token_aqui | PETR4 | =BRAPI_DATA(B2;1;"shortName") | =BRAPI_PRICE(B2;1) | =BRAPI_DATA(B2;1;"regularMarketChangePercent") | =NOW() |
Dica Pro: Formate a coluna E com cores condicionais:
- Verde se > 0
- Vermelho se < 0
Consumo de API: Você Está Seguro
Uma dúvida comum: "Vou estourar meu limite de 15.000 requisições?"
Resposta curta: Provavelmente não.
Exemplo real: Uma planilha com 30 ativos diferentes, atualizada 3 vezes por dia durante 30 dias:
- Cálculo: 30 ativos × 3 atualizações × 30 dias = 2.700 requisições/mês
- Isso é apenas 18% do limite gratuito!
Dicas para Economizar Requisições
- Evite referências circulares - Não use a função em células que recalculam automaticamente
- Use atualização manual - Configure "Cálculo: Manual" nas configurações da planilha
- Cache de dados - Para planilhas grandes, atualize uma vez por dia
- Monitore seu uso - Acesse o painel da brapi.dev para ver quantas requisições você fez
Troubleshooting: Soluções para Problemas Comuns
Erro: "token ausente"
Solução: Verifique se o token está na célula A1 ou sendo passado corretamente na fórmula.
Erro: "HTTP 401"
Solução: Token inválido. Copie novamente do painel da brapi.dev.
Erro: "HTTP 429"
Solução: Limite de requisições excedido. Aguarde o próximo mês ou considere o plano pago.
Erro: "Sem dados retornados"
Solução: Ticker inválido. Verifique o código correto do ativo na B3.
A função não atualiza automaticamente
Solução:
- Configure a planilha para recalcular automaticamente
- Ou adicione uma célula com
=NOW()
para forçar recálculo - Ou pressione Ctrl+Alt+Shift+F9 para recalcular tudo
Cotação desatualizada
Solução: O plano gratuito tem delay de ~15 minutos. Para tempo real, considere o plano pago.
Casos de Uso Avançados
1. Acompanhamento de Carteira
Crie uma planilha que calcula automaticamente:
- Valor total investido
- Valor atual da carteira
- Rentabilidade por ativo
- Rentabilidade total
- Distribuição percentual
2. Alertas de Preço
Use formatação condicional para destacar quando:
- Ação cai mais de 5% no dia
- Ação atinge preço-alvo
- Volume está acima da média
3. Histórico de Preços
Crie um script que salva os preços diariamente em uma aba separada para análise histórica.
4. Rebalanceamento Automático
Configure fórmulas que calculam quanto comprar/vender de cada ativo para manter sua alocação desejada.
Comparação: brapi.dev vs Google Finance
Recurso | Google Finance | brapi.dev |
---|---|---|
Ações B3 | ✅ Parcial | ✅ Todas |
ETFs brasileiros | ❌ Poucos | ✅ Todos |
FIIs | ❌ Não | ✅ Sim |
BDRs | ✅ Alguns | ✅ Todos |
Dados fundamentalistas | ❌ Não | ✅ Sim (via módulos) |
Histórico | ✅ Sim | ✅ Sim |
Tempo real | ✅ Sim | ✅ Plano pago |
API oficial | ❌ Não | ✅ Sim |
Próximos Passos
Agora que você tem sua planilha configurada, explore:
- Documentação completa da API - Descubra todos os dados disponíveis
- Exemplos em outras linguagens - Python, JavaScript, PHP e mais
- Dashboard da brapi.dev - Monitore seu uso de API
- Planos e preços - Considere upgrade para tempo real
Conclusão
Parabéns! Você acabou de criar uma planilha de investimentos profissional que:
✅ Atualiza cotações automaticamente
✅ Funciona com TODOS os ativos da B3
✅ Inclui ETFs que não aparecem no Google Finance
✅ É gratuita para até 15.000 requisições/mês
✅ Pode ser expandida com dados fundamentalistas
Essa solução transforma uma planilha simples em uma ferramenta poderosa de acompanhamento de investimentos, economizando horas de trabalho manual e garantindo dados sempre atualizados.
Ação agora: Abra seu Google Sheets e implemente essa solução. Em 5 minutos você terá cotações automáticas da B3!
Tem dúvidas ou sugestões? Entre em contato com nossa equipe de suporte ou compartilhe sua experiência nos comentários.
Gostou deste tutorial? Compartilhe com outros investidores que também lutam com planilhas desatualizadas!