Script to open calls by Google Forms

0

I've been involved in creating a Script that opens a Technical Call via a Google Form. By submitting the form responses the script picks up the information, collected from the answer sheet, and sends it to a specific email.

For this he writes to the end of each line the constant EMAIL_SENT. Each time he reads the constant he moves to the next line, sends his information and writes the constant again. This prevents it from opening duplicate calls.

See:

// Esta Constante escreverá na coluna "AH" a frase "EMAIL_SENT" nas linhas em que o chamado foi enviado com sucesso.
var EMAIL_SENT = "EMAIL_SENT";

function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // Primeira linha que se inicia o processo de envio de e-mail.
  var numRows = 1;   // Número de linhas para processar no envio de e-mail.
  var email = "[email protected]"; // Email de destino.
  var subject = "Novo Chamado";
     
  var dataRange = sheet.getActiveRange(); // Obtem o range De Células.
 
  
  var data = dataRange.getValues(); // Valores de busca para cada linha no intervalo.
  
  // Esta rotina fará leitura da Constante "EMAIL_SENT".
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];   
    var emailSent = row[33]; 
    var message = "TimeStamp:" + row[0] + "\nTipo de Solicitação : " + row[2] + "\nSolicitante : " + row[1] + "\nEmail bloqueio férias : " + row[3] + "\nData Início bloqueio Férias : " + row[4] + "\nData término bloqueio Férias : " + row[5] + "\nEmail bloqueio desligamento : " + row[6] + "\nData bloqueio desligamento : " + row[7] + "\nNome Completo : " + row[8] + "\nCargo : " + row[9] + "\nCentro de Custo : " + row[10] + "\nÁrea de Atuação : " + row[11] + "\nSuperior direto : " + row[12] + "\nRegime de Contratação : " + row[13] + "\nAcesso Microsiga : " + row[14] + "\nAcesso Latis : " + row[15] + "\nAcesso Email : " + row[16] + "\nAcesso Rede : " + row[17] + "\nAcesso App VWS : " + row[18] + "\nConta para Exemplo : " + row[19] + "\nEquipamento : " + row[20] + "\nRamal interno : " + row[21] + "\nCelular sem Dados : " + row[22] + "\nCelular com Dados : " + row[23] + "\nModem internet : " + row[24] + "\nOBS telefonia : " + row[25] + "\nNotebook : " + row[26] + "\nDesktop Monito : " + row[27] + "\nDockstation Monitor : " + row[28] + "\nHeadset : " + row[20] + "\nWebCam : " + row[30] + "\nOBS Notebook Desktops e Acess : " + row[31];
    
    // Esta condicional fará a escrita da Constante a célula quando satisfeito os parâmetros, decidindo se prossegue com o envio do chamado ou não.
    if (emailSent != EMAIL_SENT) {  
    
      MailApp.sendEmail(email, subject, message); //Satisfeito a condição, o chamado é enviado e...
      sheet.getRange(startRow + i, 33).setValue(EMAIL_SENT); //...a constante escreve na célula "AH", conforme estabelecido.
            // Certifica-se de que a célula seja atualizada imediatamente no caso de o script ser interrompido
      SpreadsheetApp.flush();
    }
  }
}
The code is working and the form is fulfilling what was proposed. However, the code only writes the EMAIL_SENT constant the first time it is run. After filling the first row of the sheet with the constant, the others are not filled, but the row continues to function correctly. I can not understand what's happening. Could anyone help?     
asked by anonymous 06.09.2017 / 21:02

1 answer

0

Modify the index of this line in code:

var emailSent = row[33];
sheet.getRange(startRow + i, 33).setValue(EMAIL_SENT);

To:

var emailSent = row[34];
sheet.getRange(startRow + i, 34).setValue(EMAIL_SENT);

It should work correctly.

    
22.09.2017 / 16:23