Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表格';返回的应用程序脚本无法读取属性';价值';未定义错误的定义_Javascript_Google Apps Script - Fatal编程技术网

Javascript 表格';返回的应用程序脚本无法读取属性';价值';未定义错误的定义

Javascript 表格';返回的应用程序脚本无法读取属性';价值';未定义错误的定义,javascript,google-apps-script,Javascript,Google Apps Script,我有一个简单的脚本生成一个文件和PDF格式提交后。我检查了我所有的代码,并提交了一个测试表单来测试它,但是当脚本试图从表单的电子表格结果中读取时,我不断得到“值”未定义的错误 我还尝试在电子表格中添加脚本,该脚本存储表单submissioon结果,而不是表单,但我得到了相同的错误 有人能指出我做错了什么吗 我设置了一个触发器,在表单提交时执行脚本: 这是我的密码: 函数myFunction(e){ //e、 值是表单值的数组 var timestamp=e.values[0]; var fir

我有一个简单的脚本生成一个文件和PDF格式提交后。我检查了我所有的代码,并提交了一个测试表单来测试它,但是当脚本试图从表单的电子表格结果中读取时,我不断得到“值”未定义的错误

我还尝试在电子表格中添加脚本,该脚本存储表单submissioon结果,而不是表单,但我得到了相同的错误

有人能指出我做错了什么吗

我设置了一个触发器,在表单提交时执行脚本:

这是我的密码:

函数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()});