〜20%的时间,我的Google应用脚本似乎是随机发送一封重复的电子邮件。我尝试将MailApp.sendEmail()切换为GmailApp.sendemail(),并添加了一些睡眠行,以防代码在更改工作表之前以某种方式再次运行。我只有一个on-change触发器运行脚本。也许与我的Gmail登录了多少设备有关?我对此很陌生,所以我可能会错过一些显而易见的东西。
脚本:
function SortResponse() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("SheetName");
var Avals = sheet.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
var range = sheet.getDataRange();
var values = range.getValues();
var lasteq = values[Alast-1][2];
var lastloc = values[Alast-1][3];
var sentbox = values [Alast-1][31];
var questions = 24;
Utilities.sleep(4000);
for (var i = 5; i <= questions; ++i) {
var g = sheet.getRange(Alast,i).getValue();
if (g != 'Good' && g != 'N/A' && g !== "") {
sheet.getRange(2,i).setValue(values[0][i-1]);
}
}
// Send Alert Email.
if (sentbox != "sent") {
var comments = values[Alast-1][25];
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SheetName").getRange("AJ2:AJ20");
var emailAddress = emailRange.getValues();
var msgCell = sheet.getRange('AD1').getValues();
var message = 'Equipment: '+lasteq+'\n at location: '+lastloc+'\n has been noted to need maintenance on: \n \n' +msgCell+'\n'+comments+' \n';
var subject = 'Vehicle Inspection Maintenance Email Notification';
GmailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(Alast,32).setValue("sent");
Utilities.sleep(4000);
sheet.getRange("B2:Z2").clearContent();
}
Utilities.sleep(4000);
sheet.getRange("B2:Z2").clearContent();
}
触发器:Triggers
重复的电子邮件:Duplicate Emails
电子表格图片:Spreadsheet Image
感谢您的帮助,不胜感激。
我还不确定这一点。但是,如果无法访问包含数据的电子表格,我对创建所有数据以对其进行测试不感兴趣。
function SortResponse() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("SheetName");
var range = sheet.getDataRange();
var values = range.getValues();
var lv=values.length-1;
var lasteq = values[lv][2];//Equipment
var lastloc = values[lv][3];
var sentbox = values[lv][31];
var qA=sheet.getRange(lv+1,5,1,20).getValues();
var aVrg=sheet.getRange(2,5,1,20);
var aV=aVrg.getValues();
for (var i=0;i<qA.length;i++) {
if(qA[0][i]!='Good' && qA[0][i]!='N/A' && qA[0][i]!="") {
aV[0][i]=qA[0][i];
}
}
aVrg.setValues(aV);
if (sentbox != "sent") {
var comments = values[lv][25];
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SheetName").getRange("AJ2:AJ20");//Dont know where this is
var emailAddress = emailRange.getValues();
var msgCell = sheet.getRange('AD1').getValue();
var message=Utilities.formatString('Equipment: %s\nat location: %s\nhas been noted to need maintenance on:\n\n %s\n%s \n', lasteq,lastloc,msgCell,comments);
var subject = 'Vehicle Inspection Maintenance Email Notification';
GmailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(lv+1,32).setValue("sent");
}
sheet.getRange("B2:Z2").clearContent();
}