Google Script e.values错误

时间:2016-03-23 03:31:50

标签: google-apps-script

我已经查看了其他类似帖子,并在正确设置触发器方面获得了一些帮助,但仍有错误 我已尝试自动发送pdf文档以通过电子邮件发送以响应Google应用中的表单提交。我使用在网络上共享的脚本开始并修复了一些已弃用的术语 我创建了一个嵌入了keyItems作为占位符的文档模板,并创建了一个表单来捕获数据。与表单关联的电子表格按计划捕获数据。我编辑了与电子表格相关联的脚本,希望能够完成提交表单所需的工作。触发器看起来已正确设置为运行on form submit from the spreadsheet。我的问题是关于e.values未定义的重复错误。当我宣布变量时,我假设我将这些标记为e.values[0]及以后 - 即它们将基于它们在从电子表格字段中提取的数组中的顺序。抱歉啰嗦。如果我将虚拟内容放在它工作的变量中并发送pdf,那么实际的机制就可以了,但我的e.values无效。

这是我的脚本 //完成证书

//从Google文档中获取模板并将其命名为

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);

//告诉脚本进入doc

var copyBody = copyDoc.getBody();

//使用提交的表单中的数据替换doc中的占位符

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

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用命名值。

下面是一个例子

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触发器。

另外请记住,为了测试你的剧本,你必须在一个表格上进行汇总,点击播放按钮不会起作用,因为没有事件传递给你的功能。