Я создал скрипт для автоматической отправки электронного письма на основе результатов из формы.Он работал отлично и завершил бы функцию примерно через 10 секунд.
Я перешел на использование GmailApp
для отправки электронных писем, чтобы я мог использовать псевдонимы, однако теперь моя функция просто зависает после завершения последнего шага, который присваивает значение «Отправлено по электронной почте» и запускает SpreadsheetApp.flush()
.
На странице «Выполнения» показано, что функция работает более 900 секунд и должна быть прекращена вручную.
Есть мысли?Ценю помощь!
function sendSurvey() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test Sheet");
var startRow = 2;
var numRows = 100000;
var dataRange = sheet.getRange(startRow, 1, numRows, 100);
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var npsstatus = row[8];
var csm = row[9];
var emailSent = row[11];
var subject = 'Customer Renewal Survey';
var message = "<HTML><BODY>" +
'<h3>Looks like a customer may require your help!</h3>' + "<br>" +
'<b>Customer Contact: </b>' + " " + row[1] + "<br>" + "<br>" +
'<b>Dedicated CSM: </b>' + " " + row[9] + "<br>" + "<br>" +
'<b>Likelyhood to Recommend: </b>' + " " + row[3] + ' (' + row[8] + ')' + "<br>" + "<br>" +
'<b>What they need help with: </b>' + " " + row[4] + "<br>" + "<br>" +
'<b>Additional Comments: </b>' + " " + row[5] + "<br>" + "<br>" +
'<b>CSM Best Time to Connect: </b>' + " " + row[13] + "<br>" + "<br>" +
"<br>" + "<br>" +
'<img src="cid:image"> <br/>'+
"</BODY></HTML>";
var image = DriveApp.getFileById("");
var imageblob = image.getBlob();
var body = message.replace(/\<br\/\>/gi, '\n').replace(/(<([^>]+)>)/ig, "");
var aliases = GmailApp.getAliases();
Logger.log(aliases);
if (npsstatus == 'Detractor' && emailSent != 'Email Sent') {
GmailApp.sendEmail(primaryEmail, 'Test Survey', body, {htmlBody: message, 'from': aliases[0], name: 'Survey', inlineImages: {image: imageblob}});
sheet.getRange(startRow + i, 12).setValue('Email Sent');
}
SpreadsheetApp.flush();
}
}