Como automatizar envio de e-mails usando Google Sheets + Apps Script

Utilizando o Google Apps Script você consegue realizar funções incríveis, nesse artigo mostraremos como enviar e-mails de forma automática para uma lista de pessoas da planilha.

Como automatizar envio de e-mails usando Google Sheets + Apps Script
  1. O que faremos?
  2. Criando a planilha
  3. Primeiros passos com Apps Script
  4. Looping nas linhas
  5. Envio dos e-mails
  6. Confirmação de envio
  7. Conclusão

O que faremos?

O objetivo é entender como conectar o Google Apps Script com o Google Sheets, pegar os dados da planilha e depois enviar e-mails com base nesses dados.

Para isso, vamos criar uma lista de funcionários em uma planilha com Nome, E-mail e a Tarefa do Dia. O script irá passar por cada um dos funcionários, enviando uma mensagem de bom dia e sua respectiva tarefa.

Lembrando que, esse é apenas um exemplo para mostrar as funções disponíveis, use sua criatividade para automatizar suas principais tarefas com Apps Script.

Criando a planilha

Acessaremos o site do Google Sheets para criar uma planilha em branco.

Captura de tela da opção de criar planilha em branco na página do Google Sheets

Agora, basta criar uma planilha com as colunas e linhas necessárias, a nossa ficou assim:

Planilha com coluna de Nome, E-mail, Tarefa do dia, Modelo de mensagem, mensagem e validação de envio

A ideia é percorrer cada uma dessas linhas e enviar um e-mail para cada pessoa, com sua tarefa respectiva.

Primeiros passos com Apps Script

Para inicializar o Apps Script, acesse Extensões > Apps Script.

Opções da aba de extensões do Google Sheets

Você verá uma tela, com uma função em branco, o primeiro passo é declarar uma variável relacionando a planilha que está sendo utilizada.

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página1")
}

Repare que o nome da planilha fica no canto inferior:

Captura de tela com nome da página da planilha

Agora, vamos declarar no código em quais colunas estão nossas informações.

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página1")
  var emailColumn = 2
  var messageColumn = 5
  var checkColumn = 6
}

Looping nas linhas

Para realizar um looping pelas linhas da planilha, vamos utilizar o "for", da seguinte maneira:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página1")
  var emailColumn = 2
  var messageColumn = 5
  var checkColumn = 6
  var numRows = sheet.getLastRow()

  for(var i = 2; i <= numRows; i++){
  
  }
}

Repare que adicionamos uma variável para pegar a última linha da planilha e utilizamos no "for", outro ponto importante é, começamos nosso index com 2 para não pegar os dados do cabeçalho da planilha.

Agora, utilizaremos a função "getRange()" e getDisplayValue(), para de fato pegar os dados da planillha.

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página1")
  var emailColumn = 2
  var messageColumn = 5
  var checkColumn = 6
  var numRows = sheet.getLastRow()

  for(var i = 2; i <= numRows; i++){
  var email = sheet.getRange(i, emailColumn).getDisplayValue()
  var message = sheet.getRange(i, messageColumn).getDisplayValue()
  }
}

Envio dos e-mails

Para realizar o envio dos e-mails, precisaremos montar um objeto com as informações:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página1")
  var emailColumn = 2
  var messageColumn = 5
  var checkColumn = 6
  var numRows = sheet.getLastRow()

  for(var i = 2; i <= numRows; i++){
    var email = sheet.getRange(i, emailColumn).getDisplayValue()
    var message = sheet.getRange(i, messageColumn).getDisplayValue()

    var content = {
      name: "Tavano Blog Company",
      to: email,
      subject: "Assunto - Tarefa do dia",
      htmlBody: message
    }
    MailApp.sendEmail(content);
  }
}

Após termos montado a estrutura da mensagem, utilizamos a função sendEmail, dentro do serviço de MailApp do Apps Script.

Confirmação de envio

Agora, colocaremos a função dentro de um "try catch" e adicionaremos o check na coluna 6 para cada e-mail enviado:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página1")
  var emailColumn = 2
  var messageColumn = 5
  var checkColumn = 6
  var numRows = sheet.getLastRow()

  for(var i = 2; i <= numRows; i++){
    var email = sheet.getRange(i, emailColumn).getDisplayValue()
    var message = sheet.getRange(i, messageColumn).getDisplayValue()

    var content = {
      name: "Tavano Blog Company",
      to: email,
      subject: "Assunto - Tarefa do dia",
      htmlBody: message
    }
    try{
      MailApp.sendEmail(content);
      sheet.getRange(i, checkColumn).check()
    }catch{
      console.log("E-mail não enviado")
    }
  }
}

Conclusão

Conseguimos entender o poder e a flexibilidade de utilizarmos Google Apps Script, agora basta você adaptar com as tarefas repetitivas do dia a dia e desfrutar do poder de automação da ferramenta.