How do i resolve an error for auto assign number and email trigger?

家住魔仙堡 提交于 2021-02-11 13:41:24

问题


I have a script that triggers auto number and auto email to "on form submit". But i noticed that if the email address provided by the sender has a special character or the email path is incorrect, the auto number and auto email stops (even if there are valid email address involved).

How to resolve the error?

Error Message received: ReferenceError: Note is not defined at addAutoNumber(Code:62:2)

function addAutoNumber() {
    var sheet = SpreadsheetApp.getActive().getSheetByName("Responses"); 
    var LastRow = sheet.getLastRow(); 
    var AutoNumberStart=1; 
    if (sheet.getRange(3, 1).getValue() == "Timestamp") { 
        sheet.insertColumnBefore(1); 
        sheet.getRange(3, 1).setValue("Auto Number"); 
        sheet.getRange("A3:A").setNumberFormat(0); 
        if (LastRow>1) { 
            for(var ii=2; ii <= LastRow; ii++) { 
                sheet.getRange(ii, 1).setValue(AutoNumberStart); AutoNumberStart++; 
            } 
        } 
    }

    //AUTO NUMBER 
    if (sheet.getRange(LastRow, 1).isBlank()) { 
        if (LastRow == 2) { 
            sheet.getRange(LastRow, 1).setValue(AutoNumberStart); 
        } else { 
            var LastAutoNumber = sheet.getRange(LastRow-1, 1).getValue(); 
            // Set the next AutoNumber sheet.getRange(LastRow, 1).setValue(LastAutoNumber+1); 
        } 

        // ---- Send a response receipt with the AutoNumber as a reference number 
        var EmailAddress = sheet.getRange(LastRow, 30).getValue(); 
        var recipientsCC = "email@gmail.com" + "," + (sheet.getRange(LastRow, 31).getValue());

        // email subject 
        var Subject = "Subject " + sheet.getRange(LastRow, 3).getValue(); 
        //message body 
        var Message = 'Dear Sir/Madam, \n\nThis is Your Reference Number is: <<< ' + (LastAutoNumber+1) + ' >>> ';
        // Send the mail 
        MailApp.sendEmail({ to: EmailAddress, cc: recipientsCC, from: sender, subject: Subject, body: Message });
    }
}

回答1:


If your error is related to an incorrect email path, you should validate the email and/or sanitize it if necessary

  • Sanitizing can be done with testing() against a Regex expression representing a correct email address e.g.

/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

  • Validating can be performed e.g. with String replace() against a regex expression that allows only valid characters like replace(/[^\w\s]/gi, '')

Sample:

    var EmailAddress = sheet.getRange(LastRow, 30).getValue(); 
//validate email
    if(EmailAddress !=" " && EmailAddress != " "){     
      var EmailAddress = "gre@gerg.de";
      var emailFormat = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
      if(!emailFormat.test( EmailAddress)){
//sanitize email
        EmailAddress = EmailAddress.replace(/[^\w\s]/gi, '');
      }
      var recipientsCC = "email@gmail.com" + "," + (sheet.getRange(LastRow, 31).getValue());      
      var Subject = "Subject " + sheet.getRange(LastRow, 3).getValue(); 
      var Message = 'Dear Sir/Madam, \n\nThis is Your Reference Number is: <<< ' + (LastAutoNumber+1) + ' >>> ';
      MailApp.sendEmail({ to: EmailAddress, cc: recipientsCC, from: sender, subject: Subject, body: Message });
    }


来源:https://stackoverflow.com/questions/62898194/how-do-i-resolve-an-error-for-auto-assign-number-and-email-trigger

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!