В этой строке есть проблема:
var value = sheet.getRange(lastRow,1,lastRow,lastColumn).getValues().toString();
Допустим, lastRow равен 20. Тогда этот код с получением последней строки плюс следующие 19 строк значений, которые, предположительно, все пустые,Третий параметр - это количество строк, а четвертый - количество столбцов.
Лучше передать объект события в функцию и использовать значения e.values, а не переходить к последней строке.Если вы получаете несколько отправленных форм один за другим, на самом деле вы можете получать неверные данные.
В этой строке также есть проблема:
htmlBody: "An inspection of the xyz machine has returned issues: " + "<br/><br/>"
+ "<b>" + comments + "</b>" + "<br/><br/>" +
" Click " + '<a href="https:goo.gl/ahGbGu&^"> <b>HERE</b></a>'
+ " to see the last inspection report.",
});
Запятая вконец параметра htmlBody должен быть удален.
Попробуйте этот код:
function sendEmails(e) {
var value=e.values.toString();
var comments=e.values[40];
if (value.indexOf("NOT OK") > -1) {
var html="An inspection of the xyz machine has returned issues: ";
html+="<br/><br/>" + "<b>" + comments + "</b>" + "<br/><br/>" + " Click "
html+='<a href="https:goo.gl/ahGbGu&^"> <b>HERE</b></a>' + " to see the last inspection report.";
MailApp.sendEmail({to: "test@test.com",subject: 'Machine Issue',htmlBody: html});
//Logger.log(html);
}
}
Я немного поиграл с этим, и, согласно @JG, существует проблема с триггерами onFormSubmit, возвращающими несколько триггеров.Я решил ситуацию для моего тестирования, используя следующий код, который я использовал для входа в систему триггеров FormsSubmit.
function testFormSubmission(ev) {
var lock=LockService.getUserLock();
try{
if(ev.values && !ev.values[1]){throw('Spurious Returns Error');}
if(lock.tryLock(10000)) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('LogSheet');
var tA=[Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"d/M/yyyy HH:mm:ss")];
tA=tA.concat(ev.values);
tA.splice(tA.length-1,1,ev.triggerUid,ev.range.rowStart,ev.range.columnEnd,JSON.stringify(ev.values));
sh.appendRow(tA);
lock.releaseLock();
}
}
catch(error){
console.error(error);
return;
}
}