Javascript 表格';返回的应用程序脚本无法读取属性';价值';未定义错误的定义
我有一个简单的脚本生成一个文件和PDF格式提交后。我检查了我所有的代码,并提交了一个测试表单来测试它,但是当脚本试图从表单的电子表格结果中读取时,我不断得到“值”未定义的错误 我还尝试在电子表格中添加脚本,该脚本存储表单submissioon结果,而不是表单,但我得到了相同的错误 有人能指出我做错了什么吗 我设置了一个触发器,在表单提交时执行脚本: 这是我的密码:Javascript 表格';返回的应用程序脚本无法读取属性';价值';未定义错误的定义,javascript,google-apps-script,Javascript,Google Apps Script,我有一个简单的脚本生成一个文件和PDF格式提交后。我检查了我所有的代码,并提交了一个测试表单来测试它,但是当脚本试图从表单的电子表格结果中读取时,我不断得到“值”未定义的错误 我还尝试在电子表格中添加脚本,该脚本存储表单submissioon结果,而不是表单,但我得到了相同的错误 有人能指出我做错了什么吗 我设置了一个触发器,在表单提交时执行脚本: 这是我的密码: 函数myFunction(e){ //e、 值是表单值的数组 var timestamp=e.values[0]; var fir
函数myFunction(e){
//e、 值是表单值的数组
var timestamp=e.values[0];
var firstName=e.values[1];
var lastName=e.values[2];
var title=e.values[3];
Logger.log(e.values[0]);
//文件是模板文件,您可以通过ID获取它
var file=DriveApp.getFileById('google-doc-template-file-id');
//我们可以制作一个模板的副本,命名它,并有选择地告诉它要居住在哪个文件夹中
//file.makeCopy将返回一个Google驱动器文件对象
var folder=DriveApp.getFolderById('my-drive-folder-id'))
var copy=file.makeCopy(lastName+,'+firstName,文件夹);
//创建新文件后,我们需要使用其ID将其作为文档打开
var doc=DocumentApp.openById(copy.getId());
//因为我们需要改变的一切都在体内,所以我们需要得到它
var body=doc.getBody();
//然后我们调用所有的replaceText方法
replaceText(“{{First name}}”,firstName);
replaceText(“{{Last name}}”,lastName);
replaceText({{Company}},Company);
getAs文件(pdf),;
//最后,我们保存并关闭文档以保存更改
doc.saveAndClose();
}
错误发生在第3行-var timestamp=e.values[0]代码>
- 在您的情况下,将使用googleform的容器绑定脚本
- OnSubmit事件触发器安装到
myFunction
的函数中
- 您希望从4个问题中检索3个响应值
firstName、lastName、title
- 您还需要检索
时间戳
如果我的理解是正确的,这次修改怎么样?请把这看作是几个可能的答案之一
修改点:
- 从您提供的图像中,可以发现脚本是谷歌表单的容器绑定脚本。
- 不幸的是,OnSubmit事件触发器的事件对象对于Google Form的容器绑定脚本没有
值的属性李>
- 在这种情况下,需要使用
e.response.getItemResponses()
检索响应值
- 如果事件对象中包含
值
,则要求它是电子表格的容器绑定脚本。使用电子表格的容器绑定脚本时,可以使用e.values
从myFunction(e)
检索响应值李>
- 而且,为了检索时间戳,使用了
getTimestamp()
当上述各点反映到脚本中时,它将变成如下所示
修改脚本:
发件人:
致:
参考资料:
-
- 我想这条线可能有用
- 在您的情况下,将使用googleform的容器绑定脚本
- OnSubmit事件触发器安装到
myFunction
的函数中
- 您希望从4个问题中检索3个响应值
firstName、lastName、title
- 您还需要检索
时间戳
如果我的理解是正确的,这次修改怎么样?请把这看作是几个可能的答案之一
修改点:
- 从您提供的图像中,可以发现脚本是谷歌表单的容器绑定脚本。
- 不幸的是,OnSubmit事件触发器的事件对象对于Google Form的容器绑定脚本没有
值的属性李>
- 在这种情况下,需要使用
e.response.getItemResponses()
检索响应值
- 如果事件对象中包含
值
,则要求它是电子表格的容器绑定脚本。使用电子表格的容器绑定脚本时,可以使用e.values
从myFunction(e)
检索响应值李>
- 而且,为了检索时间戳,使用了
getTimestamp()
当上述各点反映到脚本中时,它将变成如下所示
修改脚本:
发件人:
致:
参考资料:
-
- 我想这条线可能有用
我很确定我知道您的原始脚本的问题,因为它来自。如果希望原始脚本正常工作,有两件事需要更改:
- 脚本需要绑定到接受表单响应的电子表格,而不是表单本身
- 您需要将触发器上的“事件源”更改为“来自电子表格”,而不是“来自表单”
我很确定我知道您的原始脚本的问题,因为它来自。如果希望原始脚本正常工作,有两件事需要更改:
- 脚本需要绑定到接受表单响应的电子表格,而不是表单本身
- 您需要将触发器上的“事件源”更改为“来自电子表格”,而不是“来自表单”
如果我误解了你的问题,我道歉。关于
脚本尝试从电子表格中读取来自
//e.values is an array of form values
var timestamp = e.values[0];
var firstName = e.values[1];
var lastName = e.values[2];
var title = e.values[3];
Logger.log(e.values[0]);
var response = e.response;
var timestamp = response.getTimestamp();
var [firstName, lastName, title] = response.getItemResponses().map(function(f) {return f.getResponse()});