Sim: você pode enviar e-mails automáticos a partir de uma planilha do Google Sheets usando o Apps Script. A combinação funciona bem para avisos de novos pedidos, lembretes, confirmações de cadastro e tarefas internas, sem precisar contratar uma plataforma de automação logo de início.
O modelo deste tutorial usa uma linha da planilha para cada mensagem. Quando o script encontra o status PENDENTE, envia o e-mail pelo MailApp e grava a data de envio. Assim, uma pequena empresa ou equipe consegue começar com um fluxo simples e ainda manter o histórico no próprio Sheets.

O que você vai montar
Você terá uma planilha com cinco colunas:
| Coluna | Função |
|---|---|
| Status | Use PENDENTE ou ENVIADO. |
| Destinatário | Endereço de e-mail que receberá a mensagem. |
| Assunto | Título do e-mail. |
| Mensagem | Texto que será enviado. |
| Enviado em | Data preenchida automaticamente pelo script. |
O código vai procurar apenas as linhas com status PENDENTE. Depois do envio, ele altera o status para ENVIADO e preenche a quinta coluna. Esse detalhe é importante: sem um marcador, o mesmo e-mail poderia ser disparado novamente a cada execução.
1. Prepare a planilha
Crie uma planilha no Google Sheets, renomeie a primeira aba para E-mails e coloque estes títulos na linha 1:
Status | Destinatário | Assunto | Mensagem | Enviado em
Na linha 2, faça um teste com o seu próprio endereço. Por exemplo:
PENDENTE | voce@exemplo.com | Pedido recebido | Olá! Recebemos seu pedido e retornaremos em breve. |
Não use uma lista de clientes real no primeiro teste. Além de facilitar a conferência, isso reduz o risco de enviar uma mensagem incompleta para várias pessoas.
2. Abra o Apps Script e cole o código
Na planilha, abra Extensões > Apps Script. Apague o conteúdo inicial do editor e cole o código abaixo:
const NOME_DA_ABA = 'E-mails';
function enviarPendentes() {
const planilha = SpreadsheetApp.getActiveSpreadsheet();
const aba = planilha.getSheetByName(NOME_DA_ABA);
if (!aba) {
throw new Error(`A aba "${NOME_DA_ABA}" não foi encontrada.`);
}
const ultimaLinha = aba.getLastRow();
if (ultimaLinha < 2) return;
const linhas = aba.getRange(2, 1, ultimaLinha - 1, 5).getValues();
const quotaRestante = MailApp.getRemainingDailyQuota();
let enviadosNestaExecucao = 0;
for (let i = 0; i < linhas.length; i++) {
const [status, destinatario, assunto, mensagem] = linhas[i];
const statusNormalizado = String(status).trim().toUpperCase();
if (statusNormalizado !== 'PENDENTE') continue;
if (!destinatario || !mensagem) continue;
if (enviadosNestaExecucao >= quotaRestante) break;
MailApp.sendEmail(
String(destinatario).trim(),
String(assunto || 'Mensagem automática'),
String(mensagem)
);
const linhaDaPlanilha = i + 2;
aba.getRange(linhaDaPlanilha, 1).setValue('ENVIADO');
aba.getRange(linhaDaPlanilha, 5).setValue(new Date());
enviadosNestaExecucao++;
}
}
O MailApp é usado apenas para enviar mensagens; ele não lê a caixa de entrada do Gmail. O script também consulta a cota restante antes de começar, mas essa cota pode variar conforme o tipo de conta e as regras atuais do Google. Por isso, não trate esse fluxo como uma ferramenta para disparos em massa.
3. Autorize o script
Salve o projeto, escolha a função enviarPendentes no editor e clique em Executar. Na primeira vez, o Google solicitará autorização para acessar a planilha e enviar e-mails em seu nome. Revise as permissões antes de aceitar.
Se aparecer um aviso de aplicativo não verificado, isso pode acontecer em scripts criados para uso próprio. Nesse caso, confira se o projeto é realmente seu e avance apenas pelo fluxo de autorização exibido pelo Google. Não cole credenciais ou senhas no código.
4. Crie um gatilho automático
Para que a função rode sem você apertar o botão, abra a área de Gatilhos no Apps Script e crie um gatilho para a função enviarPendentes. Escolha:
- origem do evento: Baseado em tempo;
- frequência: a cada cinco minutos, a cada hora ou outra opção disponível;
- notificação de falha: conforme a importância do fluxo.
Use um gatilho instalável, não uma função simples chamada onEdit para tentar enviar o e-mail. O envio exige autorização, e gatilhos instaláveis são o caminho adequado para executar serviços autorizados. O gatilho também pertence à conta que o criou; essa pessoa deve continuar responsável por revisar e remover a automação.

5. Faça um teste seguro
Depois de criar o gatilho, siga esta sequência:
- deixe uma única linha como PENDENTE;
- confira o destinatário, o assunto e o texto;
- execute a função manualmente ou aguarde a próxima rodada;
- verifique se o e-mail chegou;
- confirme se a linha virou ENVIADO e recebeu data.
Se o e-mail chegar, mas a linha continuar como PENDENTE, não execute de novo imediatamente. Primeiro confira os registros de execução no Apps Script para evitar duplicidade. Em fluxos importantes, também vale adicionar uma coluna de erro e registrar falhas em vez de simplesmente deixar a mensagem pendente.
Limites e cuidados importantes
- Não é uma plataforma de marketing: o Apps Script tem cotas e limites de execução. Consulte a página oficial de cotas antes de aumentar o volume.
- Evite dados sensíveis: a planilha passa a concentrar destinatários e mensagens. Restrinja o compartilhamento e revise quem pode editar o arquivo.
- Cuidado com repetição: marque a linha somente depois que o envio for concluído. Ainda assim, falhas no meio do processo podem exigir uma conferência manual.
- Valide o endereço: o exemplo ignora linhas sem destinatário ou mensagem, mas não substitui uma validação completa de e-mail.
- Separe mensagens críticas: lembretes médicos, cobranças e avisos legais podem exigir uma ferramenta com auditoria, fila, opt-out e controle de entrega.
Se você só precisa receber avisos quando uma célula muda, as notificações condicionais do próprio Google Sheets podem ser mais simples. Se o objetivo é responder mensagens que chegam ao Gmail, veja também como criar respostas automáticas no Gmail com modelos e filtros. O Apps Script faz mais, mas também exige manutenção e autorização.
Perguntas frequentes
Posso enviar e-mail quando uma célula mudar?
Sim, mas o envio deve ser feito por uma função autorizada acionada por um gatilho instalável ou por uma rotina periódica. Uma função simples pode não ter permissão para acessar o serviço de e-mail.
O Google Sheets envia e-mails sozinho sem Apps Script?
O Sheets tem regras de notificação para alguns cenários, como mudanças em células. Elas são úteis para alertas básicos, enquanto o Apps Script permite controlar destinatário, assunto, mensagem e status de cada linha.
Existe limite de mensagens?
Sim. O Apps Script aplica cotas de serviços, e o limite depende da conta e das regras vigentes. Use MailApp.getRemainingDailyQuota() no código e consulte a documentação oficial antes de planejar um volume maior.