Google表单触发Apps Script生成Doc失败:变量未定义问题求助
解决Google表单提交后文档占位符不替换的问题
核心错误排查与修复
修正文档ID获取方法的拼写错误
代码中copy.getID()是错误写法,Google Apps Script的正确方法为copy.getId()(小写字母d)。这个错误会导致无法打开复制后的文档,进而无法执行占位符替换。修改后代码片段:var doc = DocumentApp.openById(copy.getId());修正触发器的函数名拼写
触发器设置的运行函数是CHHALLANDETAILS,但代码中定义的函数是CHALLANDETAILS(多了一个H)。这会导致表单提交时触发器找不到对应函数,无法执行替换逻辑。需在触发器设置里将运行函数名改为CHALLANDETAILS,与代码中的函数名保持一致。核对
e.values的索引对应关系e.values数组索引从0开始,对应表单响应表格的列顺序:e.values[0]:时间戳e.values[1]:表单第一个问题的响应(若该字段非你所需,确认是否存在跳过的情况)
检查表单响应表格的列顺序,确保e.values[2]到e.values[7]确实对应CHALLANNUMBER、VEHICLENUMBER等字段,避免索引错位导致替换内容为空。
统一占位符格式
代码中body.replaceText("DESCRIPTION", DESCRIPTION);的占位符未使用{{}},但其他占位符均带该符号。若模板文档中该字段的占位符是{{DESCRIPTION}},需修改代码为:body.replaceText("{{DESCRIPTION}}", DESCRIPTION);确保所有占位符与模板中的内容完全一致,包括大小写、符号格式。
关于手动运行报错的说明
手动运行CHALLANDETAILS函数时出现的“变量未定义”错误是正常现象:e参数仅在表单提交触发函数时自动传入,手动运行无此事件对象,因此e及依赖它的变量都会未定义。无需处理该错误,只需通过表单提交验证功能即可。
内容的提问来源于stack exchange,提问作者Ruchita Sharma
相关产品推荐
相关产品推荐

