使用无效电子邮件从 googlesheet 发送电子邮件停止循环。如何跳过
Send email from googlesheet stops for loop with invalid email. How to skip
我有一个发送电子邮件的 googlescript。它运行良好,但似乎在遇到无效电子邮件时完全停止。有一个字段是手动输入的电子邮件地址,该地址会定期出现错误。我离开办公室一周,60 封电子邮件失败,因为脚本因电子邮件无效而停在一行,没有继续前进。我不写 javascript/googlescript 所以这对我来说是一个非常具有挑战性的项目。感谢您的帮助。
如果电子邮件无效,我假设我需要添加一些内容来跳过一行。我需要在脚本中更改什么?如果 he/she 输入了无效的电子邮件地址(脚本是通过表单提交触发的),是否有办法将其退回给提交者?如果有最佳实践,我愿意接受替代方案和建议。
错误消息示例
'异常:无效的电子邮件:g.d@v.com、n.t@v.com`、c.b@v.com, z.l@v.com
在 EmailHRBPonFormSubmit(Submit:40:13 上的自动电子邮件)'
function EmailTeamonFormSubmit() {
var sheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var startRow = 2;
var numRows = sheet.getLastRow()-1; // Number of rows to process
var lastColumn = sheet.getLastColumn(); // Last column
var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // get the data range of the active sheet
var data = dataRange.getValues(); // get values for each row in the range
//////////////////////////////////////////////
//create a for loop; define variables based on increasing count, starting from zero
for (var i = 0; i < data.length; i++) {
var row = data[i];
var emailSubmitter = row[1];
var submitter = row[5];
var emailStakeholder = row[11];
var stakeholder = row[10];
var jobName = row[12];
var emailSentStatus = row[49]
var BusinessPartneremail = row[47]
var BusninessPartnername = row[48]
var subject = 'New Submission: '+jobName;
var uniqueID = row[46]
var Responses = row[45] //copy of the entire form response
//message to the team
var message = "Hello, "+
BusninessPartnername+ ", " +stakeholder+
""+
", A new submission was sent by " +submitter+ ". The Unique ID is: " +uniqueID+ ". The responses are below."
+Responses;
//send emails only if Status and email Status criteria are met
if (emailSentStatus !== "Team email Sent"){
MailApp.sendEmail(emailSubmitter+", "+emailStakeholder+", "+BusinessPartneremail, subject, message,{noReply: true}); //write email and send
sheet.getRange(startRow + i, lastColumn).setValue("Team email Sent");// write email sent when done
SpreadsheetApp.flush(); //refresh spreadsheet
}
}
}
一个快速的解决方案是添加一个 try/catch。本质上,当 MailApp.sendEmail
失败时,脚本将从下一次迭代继续,直到到达 data.length
.
才会停止
像这样包装包含 MailApp.sendEmail
函数的 if 语句:
function EmailTeamonFormSubmit() {
var sheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var startRow = 2;
var numRows = sheet.getLastRow()-1; // Number of rows to process
var lastColumn = sheet.getLastColumn(); // Last column
var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // get the data range of the active sheet
var data = dataRange.getValues(); // get values for each row in the range
//////////////////////////////////////////////
//create a for loop; define variables based on increasing count, starting from zero
for (var i = 0; i < data.length; i++) {
var row = data[i];
var emailSubmitter = row[1];
var submitter = row[5];
var emailStakeholder = row[11];
var stakeholder = row[10];
var jobName = row[12];
var emailSentStatus = row[49]
var BusinessPartneremail = row[47]
var BusninessPartnername = row[48]
var subject = 'New Submission: '+jobName;
var uniqueID = row[46]
var Responses = row[45] //copy of the entire form response
//message to the team
var message = "Hello, "+
BusninessPartnername+ ", " +stakeholder+
""+
", A new submission was sent by " +submitter+ ". The Unique ID is: " +uniqueID+ ". The responses are below."
+Responses;
//send emails only if Status and email Status criteria are met
try{
if (emailSentStatus !== "Team email Sent"){
MailApp.sendEmail(emailSubmitter+", "+emailStakeholder+", "+BusinessPartneremail, subject, message,{noReply: true}); //write email and send
sheet.getRange(startRow + i, lastColumn).setValue("Team email Sent");// write email sent when done
SpreadsheetApp.flush(); //refresh spreadsheet
}
} // try
catch(e) {continue;}
}
}
我有一个发送电子邮件的 googlescript。它运行良好,但似乎在遇到无效电子邮件时完全停止。有一个字段是手动输入的电子邮件地址,该地址会定期出现错误。我离开办公室一周,60 封电子邮件失败,因为脚本因电子邮件无效而停在一行,没有继续前进。我不写 javascript/googlescript 所以这对我来说是一个非常具有挑战性的项目。感谢您的帮助。
如果电子邮件无效,我假设我需要添加一些内容来跳过一行。我需要在脚本中更改什么?如果 he/she 输入了无效的电子邮件地址(脚本是通过表单提交触发的),是否有办法将其退回给提交者?如果有最佳实践,我愿意接受替代方案和建议。
错误消息示例 '异常:无效的电子邮件:g.d@v.com、n.t@v.com`、c.b@v.com, z.l@v.com 在 EmailHRBPonFormSubmit(Submit:40:13 上的自动电子邮件)'
function EmailTeamonFormSubmit() {
var sheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var startRow = 2;
var numRows = sheet.getLastRow()-1; // Number of rows to process
var lastColumn = sheet.getLastColumn(); // Last column
var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // get the data range of the active sheet
var data = dataRange.getValues(); // get values for each row in the range
//////////////////////////////////////////////
//create a for loop; define variables based on increasing count, starting from zero
for (var i = 0; i < data.length; i++) {
var row = data[i];
var emailSubmitter = row[1];
var submitter = row[5];
var emailStakeholder = row[11];
var stakeholder = row[10];
var jobName = row[12];
var emailSentStatus = row[49]
var BusinessPartneremail = row[47]
var BusninessPartnername = row[48]
var subject = 'New Submission: '+jobName;
var uniqueID = row[46]
var Responses = row[45] //copy of the entire form response
//message to the team
var message = "Hello, "+
BusninessPartnername+ ", " +stakeholder+
""+
", A new submission was sent by " +submitter+ ". The Unique ID is: " +uniqueID+ ". The responses are below."
+Responses;
//send emails only if Status and email Status criteria are met
if (emailSentStatus !== "Team email Sent"){
MailApp.sendEmail(emailSubmitter+", "+emailStakeholder+", "+BusinessPartneremail, subject, message,{noReply: true}); //write email and send
sheet.getRange(startRow + i, lastColumn).setValue("Team email Sent");// write email sent when done
SpreadsheetApp.flush(); //refresh spreadsheet
}
}
}
一个快速的解决方案是添加一个 try/catch。本质上,当 MailApp.sendEmail
失败时,脚本将从下一次迭代继续,直到到达 data.length
.
像这样包装包含 MailApp.sendEmail
函数的 if 语句:
function EmailTeamonFormSubmit() {
var sheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var startRow = 2;
var numRows = sheet.getLastRow()-1; // Number of rows to process
var lastColumn = sheet.getLastColumn(); // Last column
var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // get the data range of the active sheet
var data = dataRange.getValues(); // get values for each row in the range
//////////////////////////////////////////////
//create a for loop; define variables based on increasing count, starting from zero
for (var i = 0; i < data.length; i++) {
var row = data[i];
var emailSubmitter = row[1];
var submitter = row[5];
var emailStakeholder = row[11];
var stakeholder = row[10];
var jobName = row[12];
var emailSentStatus = row[49]
var BusinessPartneremail = row[47]
var BusninessPartnername = row[48]
var subject = 'New Submission: '+jobName;
var uniqueID = row[46]
var Responses = row[45] //copy of the entire form response
//message to the team
var message = "Hello, "+
BusninessPartnername+ ", " +stakeholder+
""+
", A new submission was sent by " +submitter+ ". The Unique ID is: " +uniqueID+ ". The responses are below."
+Responses;
//send emails only if Status and email Status criteria are met
try{
if (emailSentStatus !== "Team email Sent"){
MailApp.sendEmail(emailSubmitter+", "+emailStakeholder+", "+BusinessPartneremail, subject, message,{noReply: true}); //write email and send
sheet.getRange(startRow + i, lastColumn).setValue("Team email Sent");// write email sent when done
SpreadsheetApp.flush(); //refresh spreadsheet
}
} // try
catch(e) {continue;}
}
}