Durante um bom tempo, meu acompanhamento de ações foi manual: abrir o app da corretora, olhar a cotação, fechar. Fazia isso várias vezes por dia e, ainda assim, perdia o preço que eu queria — porque a hora em que o ativo chegava lá quase nunca era a hora em que eu estava olhando.
O problema nunca foi falta de informação. Era falta de aviso.
Foi aí que montei meu próprio alerta de preço dentro do Google Sheets, usando a função GOOGLEFINANCE junto com o Google Apps Script. Ele roda sozinho, chega no e-mail e funciona no celular e no computador. E você não precisa saber programar para configurar.
Neste guia, você vai montar esse sistema do zero: a planilha, o script, o teste e a automação.
- O Que Você Vai Precisar
- A Regra Que Faz o Alerta Funcionar
- Passo 1 — Monte a Planilha
- Passo 2 — Entenda o Que o Script Faz
- Passo 3 — Crie o Script de Alerta
- Passo 4 — Teste o Script Manualmente
- Passo 5 — Configure a Execução Automática
- Como Reativar o Alerta
- Limitações Que Você Precisa Conhecer
- O Que Muda Quando o Monitoramento Não Depende de Você
O Que Você Vai Precisar
- Uma conta Google.
- Acesso ao Google Sheets.
- Um e-mail para receber os alertas.
- Cerca de 15 minutos de configuração.
Só o que a sua conta Google já oferece de graça — nenhuma API paga envolvida.
A Regra Que Faz o Alerta Funcionar
Antes de montar qualquer coisa, vale entender a lógica — é ela que evita que você preencha a planilha errado.
Existem duas situações completamente diferentes quando se acompanha o preço de uma ação, e cada uma pede uma referência própria:
- Você Já Tem o Ativo na Carteira: A referência é o seu preço médio. O alerta avisa quando a cotação volta ao valor que você já pagou — momento de avaliar um novo aporte.
- Você Ainda Não Tem o Ativo: A referência é o preço alvo. É o valor que você definiu como entrada para colocar aquela ação na carteira pela primeira vez.
Em Resumo: Preencha o Preço Médio para o que você já tem e o Preço Alvo para o que você ainda quer comprar. O script identifica sozinho qual usar — não é preciso configurar nada além disso.
Passo 1 — Monte a Planilha
Abra o Google Sheets e crie uma planilha nova. Renomeie a aba para alvos — o script procura exatamente por esse nome, e é o erro mais comum de quem monta pela primeira vez.
Monte as colunas nesta ordem:
| Ativo | Preço Médio | Preço Alvo | Cotação Atual | Alerta Enviado |
|---|---|---|---|---|
| BVMF:PSSA3 | 24,59 | Fórmula | ||
| BVMF:TOTS3 | 26,69 | Fórmula | ||
| BVMF:ITSA4 | 9,80 | Fórmula |
Nas duas primeiras linhas, os ativos já estão na carteira — por isso só o Preço Médio está preenchido. Na terceira, o ativo ainda não foi comprado, então a referência é o Preço Alvo.
Agora entenda cada coluna:
- Ativo: O código de negociação. Para ações da B3, use o prefixo
BVMF:antes do ticker. Para americanas,NASDAQ:ouNYSE:. - Preço Médio: Quanto você pagou, em média, pelo ativo que já tem.
- Preço Alvo: O preço de entrada que você quer para um ativo que ainda não comprou.
- Cotação Atual: Preenchida por fórmula, automaticamente.
- Alerta Enviado: Deixe em branco. O script escreve aqui depois de mandar o e-mail, para não repetir o mesmo aviso todo dia.
Na coluna D, a partir da linha 2, use a função GOOGLEFINANCE para buscar a cotação:
=GOOGLEFINANCE(A2;"price")Repare que a fórmula aponta para a coluna A, que é onde está o código do ativo. Se a sua planilha estiver configurada com separador por vírgula, troque o ponto e vírgula: =GOOGLEFINANCE(A2,"price").
Atenção: Por ser um serviço gratuito, o GOOGLEFINANCE ocasionalmente devolve valores estranhos. Já aconteceu comigo com a cotação da WEG, que veio distorcida por alguns dias. Quando isso ocorrer, dá para substituir a fórmula por um valor digitado na mão até normalizar.
Passo 2 — Entenda o Que o Script Faz
Antes de colar o código, vale saber o que ele executa em cada rodada:
- Lê cada linha preenchida da aba.
- Verifica se existe preço médio. Se existir, é ele a referência; se não, usa o preço alvo.
- Compara a cotação atual com essa referência.
- Se a cotação estiver igual ou abaixo, envia um e-mail.
- Escreve “Enviado” na coluna E para não mandar o mesmo aviso de novo.
Passo 3 — Crie o Script de Alerta
Com a planilha aberta, vá em Extensões → Apps Script. Uma aba nova abre com o editor de código. Apague todo o conteúdo padrão e cole o script abaixo:
function verificarAlertaDePreco() {
const aba = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("alvos");
if (!aba) {
throw new Error('Aba "alvos" nao encontrada. Renomeie a aba da planilha para: alvos');
}
const ultimaLinha = aba.getLastRow();
if (ultimaLinha < 2) return; // planilha so com o cabecalho
const dados = aba.getRange(2, 1, ultimaLinha - 1, 5).getValues(); // A2:E
const email = Session.getActiveUser().getEmail();
for (let i = 0; i < dados.length; i++) {
const ativo = String(dados[i][0]).trim(); // A - Ativo
const precoMedio = parseFloat(dados[i][1]); // B - Preco Medio
const precoAlvo = parseFloat(dados[i][2]); // C - Preco Alvo
const cotacaoAtual = parseFloat(dados[i][3]); // D - Cotacao Atual
const jaEnviado = String(dados[i][4]).trim(); // E - Alerta Enviado
if (!ativo || isNaN(cotacaoAtual) || jaEnviado) continue;
// Se voce ja tem o ativo (preco medio preenchido), o gatilho e o preco medio.
// Se ainda nao tem, o gatilho e o preco alvo de entrada.
const temMedio = !isNaN(precoMedio) && precoMedio > 0;
const referencia = temMedio ? precoMedio : precoAlvo;
if (isNaN(referencia)) continue;
if (cotacaoAtual <= referencia) {
const brl = (v) => v.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' });
const assunto = temMedio
? `${ativo} voltou ao seu preco medio`
: `${ativo} chegou ao seu preco de entrada`;
let mensagem = `${ativo} esta cotado a ${brl(cotacaoAtual)}.\n`;
if (temMedio) {
const variacao = ((cotacaoAtual - precoMedio) / precoMedio) * 100;
mensagem += `Seu preco medio e ${brl(precoMedio)} - a cotacao esta ${variacao.toFixed(1)}% em relacao a ele.\n`;
mensagem += `Pode ser momento de avaliar um aporte.\n`;
} else {
mensagem += `Seu preco alvo de entrada era ${brl(precoAlvo)}.\n`;
mensagem += `O ativo ainda nao esta na sua carteira.\n`;
}
MailApp.sendEmail(email, assunto, mensagem);
aba.getRange(i + 2, 5).setValue("Enviado");
}
}
}Clique em Salvar e dê um nome ao projeto, como AlertaAcoes.
Passo 4 — Teste o Script Manualmente
Antes de automatizar, force um envio para confirmar que está tudo certo:
- Coloque temporariamente um preço médio bem acima da cotação atual, em uma das linhas.
- No editor do Apps Script, selecione a função
verificarAlertaDePrecoe clique em Executar. - Na primeira execução, o Google pede autorização de acesso à planilha e ao envio de e-mail. Clique em Permitir.
- Confira a caixa de entrada em alguns segundos.
Se o e-mail chegou, está funcionando. Devolva o preço médio ao valor real e apague o “Enviado” que o script escreveu na coluna E.
Passo 5 — Configure a Execução Automática
Rodar o script na mão todo dia derruba o propósito da automação. Ainda no editor do Apps Script, clique no ícone de relógio (Acionadores) no menu lateral e depois em Adicionar acionador.
Configure assim:
- Função a Ser Executada: verificarAlertaDePreco.
- Origem do Evento: Baseado em tempo.
- Tipo de Acionador: Contador de horas ou contador de dias, conforme a frequência que você quer.
- Notificações de Falha: Diariamente, para você saber se o script parou de rodar.
Sobre a frequência, vale pensar no seu perfil. Uma vez por dia, em um horário fixo dentro do pregão, é o suficiente para quem faz aportes planejados — é como eu uso. De hora em hora cobre o dia inteiro e captura oscilações intradiárias que um único disparo perderia, e ainda assim fica muito longe do limite de envios.
Salve. A partir daqui, o monitoramento roda sozinho.
Como Reativar o Alerta
Depois que o e-mail chega e você toma sua decisão, o alerta daquele ativo fica desligado até você reativá-lo. Para isso, apague o conteúdo da coluna E na linha correspondente.
Se você comprou o ativo, aproveite para atualizar o preço médio — e, no caso de uma primeira compra, transfira o valor da coluna Preço Alvo para a coluna Preço Médio. A partir daí, o gatilho daquela linha passa a ser o novo preço médio, automaticamente.

Limitações Que Você Precisa Conhecer
Nenhuma solução gratuita é perfeita, e conhecer os limites antes evita frustração depois.
A Cotação Tem Atraso
O GOOGLEFINANCE trabalha com um atraso de 15 a 20 minutos. Não é cotação em tempo real. Para operações de curtíssimo prazo, como day trade, essa solução não serve.
Para quem investe em prazos mais longos, o atraso é irrelevante. Eu invisto em buy and hold e faço compras pontuais — nesse tipo de estratégia, vinte minutos não mudam a decisão.
Existe Cota de Envio de E-mail
Contas Google gratuitas podem enviar até 100 e-mails por dia pelo Apps Script. Como cada ativo dispara no máximo um aviso até você limpar a coluna E, é praticamente impossível uma carteira pessoal esbarrar nesse teto.
O Alerta Não Decide por Você
Um preço atingido é só um preço atingido. A cotação pode ter caído por um motivo relevante sobre a empresa, e não por uma oscilação passageira. O script avisa que o número chegou onde você marcou — a análise continua sendo sua.
O Que Muda Quando o Monitoramento Não Depende de Você
Com pouco mais de trinta linhas de código e uma planilha simples, você tem um alerta de preço de ações rodando por conta própria.
A diferença prática é menos sobre tecnologia e mais sobre atenção. Você define o preço uma vez, e o sistema assume a vigilância. Em vez de checar cotações por impulso, você age quando existe um motivo concreto para agir.
Se quiser expandir a planilha, o caminho natural é acrescentar o câmbio ao acompanhamento — mostrei como fazer isso em Como Integrar a API do Dólar no Google Sheets com Python. E se a ideia for organizar as finanças antes de investir, a base está em Planilha de Orçamento Doméstico.
