You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Forms脚本报错:无法读取e.values属性,请求协助实现单响应存TXT

问题解决:Google Form响应转独立TXT文件脚本报错处理

报错原因

你遇到的TypeError: Cannot read properties of undefined (reading 'values')错误,是因为直接手动运行脚本导致的。e参数是表单提交时触发器自动传入的事件对象,手动运行时e不存在,自然无法读取e.values。

修正后的脚本

以下脚本修复了触发问题,同时优化了文件名(用问题标题替代数字,更直观),并处理了空响应:

function onFormSubmit(e) {
  // 获取表单响应数据与对应问题列表
  var responses = e.values;
  var form = FormApp.openById(e.source.getId());
  var items = form.getItems();
  
  // 替换为你的目标Google Drive文件夹ID
  var folder = DriveApp.getFolderById('你的文件夹ID'); 

  // 跳过第一个元素(表单提交时间戳),遍历每个问题的响应
  for (var i = 1; i < responses.length; i++) {
    var response = responses[i];
    if (!response) continue; // 跳过空响应
    
    // 用问题标题作为文件名,移除Drive不允许的特殊字符
    var itemTitle = items[i-1].getTitle().replace(/[\/\\:*?"<>|]/g, '_');
    var fileName = itemTitle + ".txt";
    
    // 检查同名文件,存在则移入回收站
    var existingFiles = folder.getFilesByName(fileName);
    if (existingFiles.hasNext()) {
      existingFiles.next().setTrashed(true);
    }
    
    // 创建新的TXT文件保存响应
    folder.createFile(fileName, response);
  }
}

正确设置步骤

  1. 打开你的Google Form,关联对应的Google表格(如果未关联,点击「响应」标签页的「链接到表格」)
  2. 在表格中点击「工具」→「脚本编辑器」
  3. 将原有脚本替换为上面的修正版本,替换你的文件夹ID为实际的Drive文件夹ID(可从文件夹URL中提取)
  4. 设置触发器:点击编辑器菜单栏「编辑」→「当前项目的触发器」→「添加触发器」
    • 选择函数:onFormSubmit
    • 选择事件源:「表单」
    • 选择事件类型:「当表单提交时」
  5. 保存设置,第一次触发时会要求授权,按提示完成权限验证即可

测试方式

不要手动运行脚本,直接在Google Form中提交一份测试响应,即可在目标Drive文件夹中看到每个问题对应的TXT文件。

内容的提问来源于stack exchange,提问作者Leandro Figueira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:13:23