Pular para o conteúdo
Programação

Como enviar e-mails automáticos com Google Sheets e Apps Script

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.

Notebook sobre uma mesa, representando automação de e-mails com Google Sheets e Apps Script
O Google Sheets pode funcionar como uma fila simples de mensagens para o Apps Script processar.

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.

Tela do Google Sheets com tabela de dados, usada para ilustrar uma automação com Apps Script
Uma tabela organizada deixa claro quais mensagens estão pendentes e quais já foram processadas.

5. Faça um teste seguro

Depois de criar o gatilho, siga esta sequência:

  1. deixe uma única linha como PENDENTE;
  2. confira o destinatário, o assunto e o texto;
  3. execute a função manualmente ou aguarde a próxima rodada;
  4. verifique se o e-mail chegou;
  5. 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.