Google apps script 谷歌脚本e.values错误

Google apps script 谷歌脚本e.values错误,google-apps-script,google-sheets,google-forms,gs-installable-triggers,Google Apps Script,Google Sheets,Google Forms,Gs Installable Triggers,我看过其他类似的帖子,在正确设置触发器方面得到了一些帮助,但仍然有一个错误。 我曾尝试在谷歌应用程序中自动发送pdf文档,以通过电子邮件回复表单提交。我使用了一个在web上共享的脚本开始使用,并修复了一些不推荐使用的术语。 我创建了一个文档模板,其中嵌入了keytems作为占位符,并创建了一个表单来捕获数据。与表单关联的电子表格正在按计划捕获数据。我编辑了与电子表格相关联的脚本,希望能够完成提交表单所需的工作。触发器看起来已正确设置为在电子表格提交时运行。我的问题是关于e.values未定义的错

我看过其他类似的帖子,在正确设置触发器方面得到了一些帮助,但仍然有一个错误。
我曾尝试在谷歌应用程序中自动发送pdf文档,以通过电子邮件回复表单提交。我使用了一个在web上共享的脚本开始使用,并修复了一些不推荐使用的术语。
我创建了一个文档模板,其中嵌入了
keytems
作为占位符,并创建了一个表单来捕获数据。与表单关联的电子表格正在按计划捕获数据。我编辑了与电子表格相关联的脚本,希望能够完成提交表单所需的工作。触发器看起来已正确设置为在电子表格提交时运行
。我的问题是关于
e.values
未定义的错误。我假设在声明变量时,我会将这些变量标记为
e.values[0]
及以后的变量,即它们将基于从电子表格字段绘制的数组中的顺序。对不起,我的话太多了。如果我将虚拟内容放在变量中,它会工作并发送pdf,因此实际机制工作正常,但我的
e.values
不工作

这是我的剧本 //竣工证书

//从谷歌文档中获取模板并命名

var docTemplate = "1V_PqCBZ9vWmmIELp47X12iNtdwRCqHyOyey6VPL0o0Q";
var docName = "CertificateOfCompletion";
//提交表单时,从表单获取信息并设置为变量

function onFormSubmit(e) {
  var name = e.values[2];
  var email = e.values[3];
  var date = e.values[4];
//为提交人制作模板文件的临时工作副本

 var copyId = DriveApp.getFileById(docTemplate).makeCopy(docName+' for '+name).getId();
//打开临时文档

var copyDoc = DocumentApp.openById(copyId);
//告诉脚本进入文档

var copyBody = copyDoc.getBody();
//用提交表单中的数据替换文档中的占位符

copyBody.replaceText('keyFullName', name);
copyBody.replaceText('keyDate', date);
copyDoc.saveAndClose();
//创建PDf

var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
//向收件人发送电子邮件

var subject = "Certificate";
var body = "Congratulations!" + name + " Here is your certificate of completion " ;
MailApp.sendEmail(email, subject, body, {htmlBody: body, attachments: pdf});
//删除临时文件

DriveApp.getFileById(copyId).setTrashed(true); }

您是否尝试过改用命名值

这里有一个例子

var handling = Number(e.namedValues["Call Handling"]);
var security = Number(e.namedValues["Security"]);
var agentName = String(e.namedValues["Agent Name"]);
这些都是我的问题。e.namedValues[“text here”]后面的位,将此处的文本替换为表单响应中的列名称,这将是问题名称

我不确定为什么e.values[0]以后的版本对您不起作用,因为它对我起作用

我的脚本在电子表格中,通过菜单安装了onFormSubmit触发器


还要记住,要测试脚本,您必须使用一个表单,因为没有要传递给函数的事件,所以按“播放”按钮无效。

您尝试过使用命名值吗

这里有一个例子

var handling = Number(e.namedValues["Call Handling"]);
var security = Number(e.namedValues["Security"]);
var agentName = String(e.namedValues["Agent Name"]);
这些都是我的问题。e.namedValues[“text here”]后面的位,将此处的文本替换为表单响应中的列名称,这将是问题名称

我不确定为什么e.values[0]以后的版本对您不起作用,因为它对我起作用

我的脚本在电子表格中,通过菜单安装了onFormSubmit触发器

还请记住,要测试脚本,您必须创建一个表单,因为没有要传递给函数的事件,所以按play按钮不起作用