Отправлять электронное письмо на основе суммы ячеек из отправки формы в google таблицах

У меня есть форма с рядом вопросов линейной шкалы. Отправка отправляется на лист, где я хочу получить общее количество их ответов, и если цифра 40 или больше, отправьте им электронное письмо «A», а если оно 39 или ниже, они получат электронное письмо «B».

Есть ли способ суммировать столбцы B: G во вновь созданной строке при отправке формы, получить адрес электронной почты пользователя из столбца H и использовать сумму B: G, чтобы определить, какое электронное письмо отправлено?

Я много раз просматривал документацию по сценариям приложений и, похоже, не смог успешно ее запустить.

Отредактировано, чтобы добавить, где я к этому пришел (понимая, что в настоящее время это бесполезно):

function onFormSubmit(e){
  var emailSubject;
  var row = 1;
  var messageCore;
  var newUserEmailSent = "NO";
  var EMAIL_SENT = "YES";
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var lastRowUsed = getFirstEmptyRowByColumnArray() -1;
  function getFirstEmptyRowByColumnArray() {
    var spr = SpreadsheetApp.getActiveSpreadsheet();
    var column = spr.getRange('A:A');
    var values = column.getValues();
    lastRowUsed.setFormula("=SUM(B1:G1)");
  }
}

Можете ли вы опубликовать то, что вы придумали?

Diego 11.04.2018 13:11

Я не уверен, что это многого стоит, но я отредактирую сообщение выше, чтобы добавить его в

pwq 11.04.2018 13:13
0
2
526
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы хорошо начали. Просмотрите объект события, возвращаемый триггером «при отправке формы». Поскольку этот объект содержит все данные ответа, вам фактически не нужно читать то, что находится на листе. В частности, обратите внимание на свойство values, которое содержит массив со значениями (ответами) в том же порядке, в каком они появляются в электронной таблице.

Используя эти значения, вы можете выполнять все операции суммирования и управления (больше или меньше 40). Затем вы можете использовать MailApp для отправки соответствующего электронного письма.

Взгляните на этот пример и внесите необходимые изменения.

function onFormSubmit(formResponse){
  var sum = 0;
  for (var i = 1; i <= 6; i++) { // Column B = 1, Column G = 6
    sum = sum + Number(formResponse.values[i]);
  }
  var emailAddress = formResponse.values[7]; // This is the value that will be in Column H
  var yourEmailAddress = "me@example.com"; // Will be used in the BCC field, in case you want to receive the emails too
  if (sum >= 40) {
    var emailASubject = "Email A Subject";
    var emailABody = "Email A Body";
    MailApp.sendEmail(emailAddress, emailASubject, emailABody, {bcc: yourEmailAddress});
  } else {
    var emailBSubject = "Email B Subject";
    var emailBBody = "Email B Body";
    MailApp.sendEmail(emailAddress, emailBSubject, emailBBody, {bcc: yourEmailAddress});
  }
}

Я предполагаю, что ваши ответы формы уже сохранены в вашей электронной таблице (это требование), но не забудьте в установить триггер, как показано ниже.

enter image description here

ГЕРОЙ! Большое спасибо, что изучили это - теперь я собираюсь заняться содержанием электронной почты - это так неприятно, когда я знаю, что что-то возможно, но я просто не могу понять это.

pwq 11.04.2018 16:10

Я только что сделал еще пару тестов и, кажется, выдает электронное письмо A независимо от того, какой результат ... Ошибка в AppScript - TypeError: невозможно прочитать "значения" свойств из неопределенного. (строка 4, файл «Код»)

pwq 11.04.2018 16:21

@pwq Вы запускали функцию вручную или запускали ее, отправив форму?

Diego 11.04.2018 16:25

и то, и другое, я отправил форму с двумя разными оценками - один больше 40 и один меньше, и когда я получил электронное письмо A для обоих, я запустил его вручную

pwq 11.04.2018 16:27

@pwq Вы не можете запустить его вручную, если не передадите фиктивные данные. Вам нужно преобразовать значение в число. Моя ошибка. Должен быть sum = sum + Number(formResponse.values[i]);

Diego 11.04.2018 16:32

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

pwq 11.04.2018 16:45

Другие вопросы по теме