Enviando e-mails condicionais a partir do Google Forms
Tags: braziliandevs, tutorial, javascript
Published: 2022-01-10 12:40:12

Eu tenho um formulário no [Google Forms](https://workspace.google.com/intl/pt-BR/products/forms/) e precisava enviar e-mails diferentes **de acordo com a resposta do meu usuário**.

Como não achei nenhum app pronto e gratuito, resolvi criar uma função bem simples em **Javascript** para resolver meu problema.

Nesse post, conto o passo a passo de como esse script foi feito.

### 1) Criando um formulário de testes
Primeiro, [crie um formulário](https://docs.google.com/forms/u/0/) simples para usarmos como testes.

![Formulário simples](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oqhigywyq3u2ogwomdpz.png) 

Nesse formulário, estou simulando a inscrição para uma vaga de desenvolvimento web. Conforme a vaga que o usuário selecionar (frontend ou backend), ele vai receber um desafio diferente.

Eu selecionei a opção para coletar e-mails do usuário também.

### 2) Abrindo a planilha de respostas
A nossa integração não acontece diretamente no Google Forms, mas sim no **Google Sheets**. Podemos criar uma planilha para qualquer formulário.

![Respostas do formulário](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wo2szooq2dvamfccjyfv.png)

Para isso, clique em respostas do formulário e selecione o ícone do Google Sheets. Depois disso é só escolher a opção para criar uma planilha com suas respostas.

![Planilha no Google Sheets](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/51pgv7vg2hg3kx93f7d3.png)

Feito isso, todas as respostas que chegarem no seu formulário, serão direcionadas para essa planilha.

### 3) Criando um script simples
Para criar um novo script, com a janela da planilha aberta clique em Extensões e depois em **Apps Scripts**.

![Menu de extensões no Google Sheets](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9qmc78g1tjflsbo3fybj.png)

Será aberta uma nova janela com uma função já criada, onde iremos adicionar nosso script.

![Apps Scripts](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89calrharudk56yqoiwd.png) 

### 4) Criando nosso script
Vamos começar com uma informação importante: **App Scripts** utiliza Javascript para a criação de scripts. 

Dito isso, podemos seguir adiante. Nomeei a função de `checkResponses` e atribui a variável `respostas` os valores que vamos receber do evento de submeter o formulário.

```javascript
function checkResponses(e) {
  var respostas = e.namedValues;
}
```

Para receber os valores conforme o nome da coluna, eu usei esse laço `for` que percorreu as respostas que recebemos do nosso form.

```javascript
  var email = "";
  var vaga = "";

  for (Key in respostas) {
    if (Key == 'Que vaga você gostaria de se inscrever?') {
      vaga = respostas[Key];
    }

    if (Key == 'Endereço de e-mail') {
      email = respostas[Key];
    }
  }
```

Antes de seguir para o próximo passo, salve seu script com um nome que desejar.

### 5) Ativando um acionador (trigger)
Agora, precisamos de um acionador que irá ativar nosso script toda vez que alguém enviar uma resposta para o nosso formulário.

Para isso, clique na barra lateral a opção Acionadores. Clique em adicionar um novo acionador e depois selecione a opção de evento **Ao enviar o formulário** e salve.

![Opções do acionador](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1lbue6j8gy0sng9w2h6z.png) 

É necessário autorizar seu script para rodar corretamente. Para isso, volte no **Editor** clique no botão de **Executar**. Depois é só autorizar com sua conta do Google. Esse processo só é necessário ser feito uma vez por autorização.

![Botão executar](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1jqgfi6op1nnmsfvrrz.png)

Feito isso, toda vez que alguém enviar uma resposta no nosso formulário, a função `checkResponses` será ativada.

### 6) Logando valores recebidos e erros
Uma ferramenta muito importante para debuggar nosso código é o log de respostas. Como não podemos testar nossa função sem o acionador ser ativado, analisar os logs é a forma perfeita de encontrar erros no nosso script.

Para logar o email e a vaga que o usuário enviou através do form, adicione o código abaixo no fim do script.

```javascript
  Logger.log(email);
  Logger.log(vaga);
```

Para visualizar os logs, clique em **Execuções** na barra lateral.

![Logs na aba Execuções](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pcmjamjknh7woj0g1aqv.png)

### 7) Enviando e-mails
Por fim, queremos enviar e-mails de acordo com a resposta que recebemos.

Para isso, iremos utilizar um método do Gmail que está prontinho para ser usado. A estrutura dele é bem simples: o primeiro parâmetro é o endereço que vai receber o e-mail, depois o assunto do e-mail e por fim o conteúdo do e-mail.

```javascript
GmailApp.sendEmail(enderecoDestino, assuntoEmail, conteudoEmail);
```

Para finalizar esse script, fiz esse `if else` para enviar os e-mails de acordo com a vaga selecionada pelo meu usuário.

Repita o processo de autorização da etapa 5 para autorizar seu script a enviar e-mails.

```javascript
  if (vaga == "Frontend"){
    Logger.log("Frontend");
    GmailApp.sendEmail(email, "Vaga frontend", "Desafio frontend");
  }
  else {
    Logger.log("Backend");
    GmailApp.sendEmail(email, "Vaga backend", "Desafio backend");
  }
```

**Dica:** para o código ficar mais organizado, você pode colocar o corpo do e-mail numa variável a parte usando [Template strings](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Template_literals).

--- 

E aí, o que acharam? Eu achei bem simples e repleto de possibilidades de uso.  

Espero que tenha ajudado e qualquer dúvida é só chamar. 😊