使用Google Apps Script实现Google表单自动填充文档报错求助
解决Google Apps Script报错:TypeError: Cannot read properties of undefined (reading 'values')
报错核心原因
这个函数是表单提交触发的专用函数,e参数是Google Apps Script在表单收到新回复时自动传入的事件对象。如果直接在脚本编辑器里点击「运行」,e会是undefined,自然无法读取e.values。
完整解决步骤
1. 先修正代码里的变量拼写错误
你的代码里存在多处变量名不一致的问题,会导致后续替换内容失败,同时要替换占位符为实际ID:
function autoFillGoogleDocsFromForm(e) { // 从表单响应事件中获取数据(e.values[0]是提交时间,后续对应表单字段顺序) var hoten = e.values[1]; var sodienthoai = e.values[2]; var ngaysinh = e.values[3]; var image = e.values[4]; // 替换为你的模板文档ID和目标文件夹ID var templateFile = DriveApp.getFileById("你的文档模板ID"); var templateResponseFolder = DriveApp.getFolderById("你的目标文件夹ID"); // 复制模板文档并命名 var copy = templateFile.makeCopy('Họ và Tên ' + hoten, templateResponseFolder); var doc = DocumentApp.openById(copy.getId()); var body = doc.getBody(); // 替换文档中的占位符 body.replaceText("{{HoTen}}", hoten); body.replaceText("{{Sdt}}", sodienthoai); body.replaceText("{{Birthday}}", ngaysinh); body.replaceText("{{ImageUrl}}", image); doc.saveAndClose(); }
2. 绑定表单提交触发器
不能手动运行这个函数,必须设置自动触发:
- 打开脚本编辑器,点击左侧时钟形状的「触发器」图标
- 点击「添加触发器」
- 配置如下选项:
- 要运行的函数:
autoFillGoogleDocsFromForm - 部署来源:
Head - 事件来源:
表单提交 - 事件类型:
来自表单
- 要运行的函数:
- 点击「保存」,按提示完成脚本授权(遇到“未验证应用”提示时,选「高级」→「转到脚本」即可)
3. 测试功能
手动提交一次Google表单,检查目标文件夹是否生成了填充好的文档。
额外注意事项
- 确认
e.values的索引和你的表单字段顺序一致:e.values[0]是提交时间,后续依次对应表单的第1、第2个字段,若表单字段顺序调整,要同步修改索引。
内容的提问来源于stack exchange,提问作者Mai Phước Hoàng
相关产品推荐
相关产品推荐

