Как отправить условное письмо по значению ячейки из ответа формы? - PullRequest
0 голосов
/ 14 июня 2019

У меня есть формула, которая рассчитывает число на основе ответа от формы Google. В зависимости от того, что это номер, я хочу отправить электронное письмо, используя данные из от, а также предварительно введенное письмо в другой ячейке.

В Col1 - отметка времени, в col14 - дата начала работы сотрудника. Моя формула в Кол. 33 определяет, сколько дней они работали на момент отправки формы.

Я хочу отправить электронное письмо этому человеку, если количество дней меньше 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 только в новой строке ответа формы.

Извините, если на этот вопрос был дан ответ в другом месте, любой другой ответ, который я нашел на подобные проблемы, я не смог получить на работу.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

У меня есть кто-то, кто намного лучше в скрипте приложений Google на работе, чтобы помочь мне

Это связано с тем, что формы 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});
  }

}

Спасибо!

0 голосов
/ 14 июня 2019

Вам не нужно обходить все столбцы, чтобы получить одно значение ячейки, поэтому нет необходимости в цикле 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);

    }

Надеюсь, это поможет

...