Google Apps脚本-函数之间传递的变量显示为未定义

时间:2019-02-24 21:19:55

标签: google-apps-script

我有一些代码,其中有一些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()时,确实收到了一封电子邮件,但正文未正确显示原因。这是我收到的电子邮件的一个示例:

2019年2月24日星期日12:26:01 GMT-0800(PST)
您的表单已关闭,原因是:
未定义
消息结束。

我不知道为什么原因显示为未定义。我尝试在SendAnEmail函数(已被注释掉的行)中设置原因,并且可以正常工作,但是我需要能够更改原因。

编辑:现在可以使用。事实证明,“运行”按钮被设置为运行“ SendAnEmail”功能而不是“ FindReason”功能。感谢所有提供建议的人。

1 个答案:

答案 0 :(得分:0)

可能发生的情况是else if(FormClose = TRUE)无法正常工作。

  1. =是分配运算符,您要等于===
  2. TRUE在js中是小写字母,因此您想使用true
  3. 您还使用False,应为false

如果您在Google脚本编辑器的控制台中查看,应该会看到某种错误,因为它不知道FalseTRUE是什么(它将认为它们是未声明的变量)

尝试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);
  }
}