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();
}
}
}