Javascript 如何将Google表单响应(作为变量传递到数组)传递到HTML模板以实现自动电子邮件警报?
我的最终目标是根据表单用户级别(lvl)/优先级选择触发发送给客户端的自动电子邮件。级别3应在电子邮件模板中发送所选表格答案。(我假设我的2级条目也存在同样的问题,仅用于维护跟踪) 如果这些可能是重复的问题,我深表歉意(我几乎没有编码经验,主要是VBA),但我已经充分利用论坛了解了其中的大部分内容,并阅读了,不幸的是,我必须错过或阅读它,因为我在传递表单答案时遇到问题(由提交触发)以及计算e.range以获取要从HTML模板中选取的数组字符串 我在提交表单时出现以下错误 “引用错误:未定义返回数据 评估时([未知文件]:10:70) 评估时([未知文件]:39:3) 在checkAlert(代码:34:29) 在onFormSubmit上提交(代码:4:3)” 这是我的密码: 代码.gsJavascript 如何将Google表单响应(作为变量传递到数组)传递到HTML模板以实现自动电子邮件警报?,javascript,html,google-forms,html-templates,Javascript,Html,Google Forms,Html Templates,我的最终目标是根据表单用户级别(lvl)/优先级选择触发发送给客户端的自动电子邮件。级别3应在电子邮件模板中发送所选表格答案。(我假设我的2级条目也存在同样的问题,仅用于维护跟踪) 如果这些可能是重复的问题,我深表歉意(我几乎没有编码经验,主要是VBA),但我已经充分利用论坛了解了其中的大部分内容,并阅读了,不幸的是,我必须错过或阅读它,因为我在传递表单答案时遇到问题(由提交触发)以及计算e.range以获取要从HTML模板中选取的数组字符串 我在提交表单时出现以下错误 “引用错误:未定义返回数
function onFormSubmit(e) {
Logger.log("[METHOD] onFormSubmit");
checkAlert(e.range);
}
function checkAlert(range) {
Logger.log("[METHOD] checkAlert");
var values = range.getValues();
var col = values[0];
var lvl = col[8];
// lvl 0 --> Do nothing
if (lvl == "1" || "2") {
var datetime = col[0]; // Timestamp
var loc = col[1]; // Location
var RAPID = col[2]; // Y/N needs attention
var pumpspec = col[3];
var pumpair = col[4];
var counter = col[5];
var comm = col[6]; // User comments
var conc = col[7]; // User concerns
var sup = "supemail@example.com"; // Field Manager, and Non-routine email
var returnData = [datetime, loc, RAPID, pumpspec, pumpair, counter, comm, conc, lvl, sup];
var html = HtmlService.createTemplateFromFile('2template');
html.data = returnData;
var emailContent = html.evaluate().getContent(); //HTML Output
var sub = "MAINTENANCE ALERT"
MailApp.sendEmail({
to: sup,
subject: sub,
htmlBody: emailContent
});
}
if (lvl == "3") {
var datetime = col[0]; // Timestamp
var loc = col[1]; // Location
var RAPID = col[2]; // YN needs attention
var comm = col[6]; // User comments
var conc = col[7]; // User concerns
var client = "clientemail@example.com";
var returnData = [datetime, loc, RAPID, comm, conc, client, lvl]; //For some reason causing getValues issues
var html = HtmlService.createTemplateFromFile('3template');
html.data = returnData ;
var emailContent = html.evaluate().getContent();
MailApp.sendEmail({
to: client,
subject: "ALERT! Daily Inspections - RED FLAG",
htmlBody: emailContent
});
}
}
3template.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h3> A technician has noted an immediate concerning issues:</h3><hr /> \
<p> \
<h1 style='line-height:90%'>Priority level <?= returnData[6] ?> - Location: <?= returnData[1] ?> <br /> \
<span style='font-size:60%'> <?= returnData[0] ?> </span></h1> \
<p><hr /> \
<p> \
<strong>ISSUE:</strong><br /> \
<? returnData[4] ?> \
</p><p> \
<strong>ADDITIONAL INFO:</strong><br /> \
<? returnData[3] ?> \
</p><p> \
<strong>FIELD MANAGER CONTACT INFO:</strong> \
(123) 800-1234, supemail@example.com \
</p>
</body>
<!-- var returnData = [0 datetime, 1 loc, 2 RAPID, 3 comm, 4 conc, 5 client, 6 lvl] -->
</html
一位技术人员注意到一个直接相关的问题:
\
\
优先级-位置:
\
\
\
\
问题:
\
\
\
其他信息:
\
\
\
现场经理联系信息:\
(123) 800-1234, supemail@example.com \
在谷歌应用程序脚本端,使用了createTemplateFromFile('2template')
和createTemplateFromFile('3template')
。但是在HTML方面,文件名似乎是template3.HTML
。“这个怎么样?”塔奈克,我道歉。这是一个打字错误,因为我在复制代码,以减少对公司信息、客户和服务的特定性。我编辑了这个问题。我还应该注意,代码在表单上,而不是响应表上。我假设这与它是否使用“e”来携带响应输入无关。我正在考虑调整代码以在工作表上工作,并从最新输入(lastrow)获取数据。感谢您回答和更新您的问题。关于我尝试在提交表单时记录'e',以查看我得到的代码评估结果,它返回'[object][object]',这一定是一些我不理解的概念错误。
,如果您使用了console.log(e)
,请使用JSON.stringify
类似console.log(JSON.stringify(e))
然后再次测试。这样,您可以提供console.log(JSON.stringify(e))
的示例值吗?在此,我想确认您的问题。我使用标准表单条目运行它。这是整个stackdriver日志:2020年11月22日,10:59:02 PM Info[METHOD]onFormSubmit 2020年11月22日,10:59:03 PM Debug{“authMode”:“FULL”,“response”:{},“source”:{},“triggerUid”:“5419063”}2020年11月22日,10:59:03 PM Info[METHOD]checkAlert 2020年11月22日,10:59:03 PM错误类型错误:无法在onFormSubmit(代码:6:3)的checkAlert(代码:12:22)读取未定义的属性“getValues”。感谢您的回复。如果回复中的{“authMode”:“FULL”,“response”:{},“source”:{},“triggerUid”:“5419063”}
是console.log(JSON.stringify(e))
的值,则似乎不包括范围。不幸的是,从您的问题中,我无法理解您复制问题的设置细节。所以我还不能告诉你你的问题的明确原因。这是因为我的技术差。对此我深表歉意。