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); } }
正确设置步骤
- 打开你的Google Form,关联对应的Google表格(如果未关联,点击「响应」标签页的「链接到表格」)
- 在表格中点击「工具」→「脚本编辑器」
- 将原有脚本替换为上面的修正版本,替换
你的文件夹ID为实际的Drive文件夹ID(可从文件夹URL中提取) - 设置触发器:点击编辑器菜单栏「编辑」→「当前项目的触发器」→「添加触发器」
- 选择函数:
onFormSubmit - 选择事件源:「表单」
- 选择事件类型:「当表单提交时」
- 选择函数:
- 保存设置,第一次触发时会要求授权,按提示完成权限验证即可
测试方式
不要手动运行脚本,直接在Google Form中提交一份测试响应,即可在目标Drive文件夹中看到每个问题对应的TXT文件。
内容的提问来源于stack exchange,提问作者Leandro Figueira
相关产品推荐
相关产品推荐

