我有一些代码,其中有一些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”功能。感谢所有提供建议的人。
答案 0 :(得分:0)
可能发生的情况是else if(FormClose = TRUE)
无法正常工作。
=
是分配运算符,您要等于===
。TRUE
在js中是小写字母,因此您想使用true
。False
,应为false
。如果您在Google脚本编辑器的控制台中查看,应该会看到某种错误,因为它不知道False
或TRUE
是什么(它将认为它们是未声明的变量)
尝试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);
}
}