问题
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