У меня есть формула, которая вычисляет число на основе ответа из формы Google. В зависимости от того, какой это номер, я хочу отправить электронное письмо, используя данные из, а также предварительно набранное электронное письмо в другой ячейке.
В столбце 1 указана отметка времени, в столбце 14 — дата начала работы сотрудника. Моя формула в Col33 определяет, сколько дней они проработали на момент отправки формы.
Я хочу отправить электронное письмо человеку, если количество дней меньше 182.
У меня есть предварительно напечатанное электронное письмо, и я могу разместить его где угодно. На данный момент он у меня во всех ячейках в col36. Адрес электронной почты будет в столбце 32.
Я пробовал несколько разных кодов, и ни один из них не отправляет электронное письмо независимо от того, какой триггер я установил. У меня есть очень базовые знания о сценариях приложений, поэтому мой текущий код может быть совершенно неправильным, но он должен примерно показывать, к чему я клоню.
function sendEmail() {
var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues()
for (i in values.length) {
var data = values[i][33];
var emailAddress = values[i][32];
var message = values[i][36];
if (data < 182); {
MailApp.sendEmail(emailAddress, "Flexible Working Request", message);
}
}
}
Текущие результаты только что удаляли данные в col33, Col34 и Col36 только в новой строке ответа формы.
Извините, если на этот вопрос был дан ответ в другом месте, любой другой ответ, который я нашел на аналогичные проблемы, я не смог приступить к работе.
Вам не нужно просматривать все столбцы, чтобы получить одно значение ячейки, поэтому нет необходимости в цикле for
. Вы можете сделать это напрямую с помощью:
var sheet = SpreadsheetApp.getActiveSheet().getSheets[0];
var cell = ["A33"];
var days_value = sheet.getRange(cell).getValue();
Затем вы можете просто сделать условие if
для отправки электронного письма:
if (days_value < 182){
MailApp.sendEmail(emailAddress, "Flexible Working Request", message);
}
Надеюсь это поможет
У меня есть человек, который намного лучше разбирается в скриптах Google Apps на работе, чтобы помочь мне.
Это связано с тем, что формы Google отодвигают формулы в сторону.
Поэтому нам пришлось переместить формулу, вычисляющую количество дней, на другой лист, а затем использовать эту формулу, которая сработала.
function sendEmailv2() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form responses
1');
var scrip = Session.getScriptTimeZone();
var date = sheet.getRange(sheet.getLastRow(),14).getValue();
var sub = sheet.getRange(sheet.getLastRow(),1).getValue();
Logger.log(date);
var fortmat = Utilities.formatDate(new Date(date), scrip, "dd/MM/yyyy");
var Subfortmat = Utilities.formatDate(new Date(sub), scrip, "dd/MM/yyyy");
var emailAddress = sheet.getRange(sheet.getLastRow(),32).getValue();
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet4');
var message = sheet2.getRange(1,1).getValue();
var days = sheet2.getRange(sheet2.getLastRow(),2).getValue();
if (days<182){
MailApp.sendEmail(emailAddress, "Flexible Working Request", message,{noReply:true});
}
}
Спасибо!