Javascript TypeError:无法读取属性";价值观;从未定义。(第4行,文件“代码”)
我正在使用这个模板向填写表单的人发送电子邮件,问题是每次我尝试运行它时,都会出现此错误 TypeError:无法从未定义中读取属性“值”。(第4行,文件“代码”) 有人能帮我找出问题所在吗 谢谢大家!Javascript TypeError:无法读取属性";价值观;从未定义。(第4行,文件“代码”),javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在使用这个模板向填写表单的人发送电子邮件,问题是每次我尝试运行它时,都会出现此错误 TypeError:无法从未定义中读取属性“值”。(第4行,文件“代码”) 有人能帮我找出问题所在吗 谢谢大家! function emailOnFormSubmit(e) { // Create as many variables as answers (columns in your spreadsheet) you require to send var Timestamp = e.v
function emailOnFormSubmit(e) {
// Create as many variables as answers (columns in your spreadsheet) you require to send
var Timestamp = e.values[0];
var mail = e.values[1];
var name = e.values[2];
var Break = e.values[3];
// The subject of the email
var subject = "Break time! " + name;
// emailBody is for those devices that can't render HTML, is plain text
var emailBody = "Hola " + name + "tu hora de salida es " + Timestamp + "tu hora de regreso es " + Timestamp + time (0,20,0) +
"\nFrom " + city +
"\nWith email " + mail +
"\nRegister on " + timestamp +
"\n\nThank you for register!";
// html is for those devices that can render HTML
// nowadays almost all devices can render HTML
var htmlBody = "Thank you, your form was submitted on <i>" + timestamp + "</i>" +
"<br/><br/>The details you entered were as follows: " +
"<br/>Your Name: <font color=\"red\"><strong>" + name + "</strong></font>" +
"<br/>From: " + city +
"<br/>With email: " + mail;
// More info for Advanced Options Parameters
// https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,Object)
var advancedOpts = { name: "No reply", htmlBody: htmlBody };
// This instruction sends the email
MailApp.sendEmail(mail, subject, emailBody, advancedOpts);
}
功能emailOnFormSubmit(e){
//创建您需要发送的答案(电子表格中的列)的尽可能多的变量
var Timestamp=e.values[0];
var mail=e.values[1];
变量名称=e.values[2];
var Break=e.值[3];
//电子邮件的主题
var subject=“休息时间!”+名称;
//emailBody用于那些不能呈现HTML的设备,是纯文本
var emailBody=“Hola”+name+“tu hora de salida es”+时间戳+“tu hora de regreso es”+时间戳+时间(0,20,0)+
“\n来自”+城市+
“\n通过电子邮件”+邮件+
“\n在”+时间戳上注册+
“\n\n感谢您的注册!”;
//html适用于那些可以呈现html的设备
//现在几乎所有的设备都可以呈现HTML
var htmlBody=“谢谢,您的表格是在“+时间戳+”上提交的”
“
您输入的详细信息如下:”+
“
您的姓名:”+Name+“”+
“
来自:“+city+
“
带有电子邮件:“+邮件;
//有关高级选项参数的详细信息
// https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(字符串,字符串,字符串,对象)
var advancedOpts={name:“无回复”,htmlBody:htmlBody};
//此指令发送电子邮件
MailApp.sendmail(邮件、主题、邮件正文、高级选项);
}
小上下文:
您的错误为TypeError:无法从未定义的文件中读取属性“值”。(第4行,文件“Code”)
我认为第4行是var Timestamp=e.values[0]代码> 在这一行中,您试图获取在第0个位置的Object
中传递的值,错误是Objecte
未定义。当我们试图手动运行函数而不提供它所需的所有参数时,通常会发生这种情况 在这里,根据您提供的信息,这意味着您希望在任何人填写表单时触发此功能,此功能将向此人发送电子邮件。要使此函数正常工作,必须在调用此函数时向其提供Objecte
为什么会出现此错误: 当您试图手动运行它时(通过从下拉列表中选择它并单击“执行”按钮),您没有为它提供所需的参数,即Objecte
建议的解决方案:e
基于表单提交创建一个触发器并从那里调用此函数,该触发器将在调用它时提供此参数。我的意思是,无论何时提交任何表单,触发器都会用该响应调用此函数。将其放在第2行:console.log(e)代码>将其放在第3行:
console.log(e.values[0])代码>这两个的输出是什么?它给我这个错误消息“TypeError:无法读取未定义的属性“值”。(第3行,文件“代码”)“首先检查它是否存在。如果(e.values[0]){var Timestamp=e.values[0];}您肯定对e有问题,因此您需要首先找出原因,但要消除错误,最好的办法是执行以下操作:让{values=[]}=e;让时间戳=值[0]| |“”;您将返回未定义而不是错误。如果您通过单击“播放”按钮运行脚本,则不会发生任何事件(如果在表单提交时触发脚本,则不会提交表单)。因此,事件对象(e)将是未定义的。