Скрипт Google Apps - переменная, переданная между функциями, отображается как неопределенная - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть код, в котором есть некоторые операторы if / else if для определения причины закрытия формы Google.Я хочу передать эту причину другой функции, которая отправит электронное письмо с уведомлением о том, что форма закрылась и почему.Я не знаю, почему причина, которая должна быть строкой, не передается функции, отправляющей электронную почту.

Я вообще не имею дело с формой в этом коде.Для простоты я открыл новый автономный скрипт, не связанный ни с какой формой или листом Google, чтобы проверить только эту часть (определить причину и отправить электронное письмо).Вот код:

Первая функция для определения причины закрытия формы и вызова второй функции для отправки электронной почты:

function FindReason() {
  var Day1Seats = 5;
  var Day2Seats = 5;
  var Day1Responses = 6;
  var Day2Responses = 1; 
  var FormClose = false;

  if(Day1Responses >= Day1Seats) {
    var reason = "All seats taken for Day 1";
    SendAnEmail(reason);
  }
  else if(Day2Responses >= Day2Seats) {
    var reason = "All seats taken for Day 2";
    SendAnEmail(reason);
    }
  else if(FormClose) {
    var reason = "Form close date";
    SendAnEmail(reason);
  }
}

Вторая функция, которая отправляет электронную почту (адрес электронной почты, очевидно, изменен для конфиденциальности):

function SendAnEmail(closereason) {

  var recipientTO = "name@example.com";
  var subject = "This is the subject";
  //var closereason = "All seats taken for Day 1";

  MailApp.sendEmail({
    to: recipientTO,
    subject: subject,
    htmlBody: (new Date()) + "<br>Your form has been closed because: <br>" + closereason + "<br>End of message."
  });
}

Когда я запускаю FindReason (), я получаю электронное письмо, но тело не отображает причину.Это пример электронных писем, которые я получаю:

Вс 24 февраля 2019 12:26:01 GMT-0800 (PST)
Ваша форма была закрыта, потому что:
undefined
Конецсообщение.

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

Редактировать: Теперь это работает.Оказывается, кнопка «Выполнить» была настроена на запуск функции «SendAnEmail», а не функции «FindReason».Спасибо всем, кто предложил свои предложения.

1 Ответ

0 голосов
/ 25 февраля 2019

Вероятно, что else if(FormClose = TRUE) не будет работать.

  1. = - оператор присваивания, вам нужно равенство, равное ===.
  2. TRUE является строчным в js, поэтому вы хотите true.
  3. Вы также используете False, который должен быть false.

Если вы посмотрите в GoogleВ консоли редактора сценариев вы должны увидеть какую-то ошибку, потому что она не будет знать, что такое False или TRUE (она будет думать, что они являются необъявленными переменными).

try else if(FormClose === true) или дажеПроще говоря, else if (FormClose), потому что, если он оценивается как true, это сделает работу.

function FindReason() {
  var Day1Seats = 5;
  var Day2Seats = 5;
  var Day1Responses = 6;
  var Day2Responses = 1; 
  var FormClose = false;

  if(Day1Responses >= Day1Seats) {
    var reason = "All seats taken for Day 1";
    SendAnEmail(reason);
  } else if(Day2Responses >= Day2Seats) {
    var reason = "All seats taken for Day 2";
    SendAnEmail(reason);
  } else if(FormClose) {
    var reason = "Form close date";
    SendAnEmail(reason);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...