Google表单自动填充Google Doc失效,关联Google Sheet不更新新响应
问题:Google Form新响应无法同步至关联Sheet,也无法自动生成目标Google Doc
我按照教程步骤,尝试将Google Form的新响应自动复制到Google Doc中,但提交新响应后出现两个问题:
- 目标文件夹未生成对应的Google Doc
- 关联的Google Sheet未同步新响应,仅能在Google Form的响应页面查看
我已尝试重新提交响应、刷新Sheet和目标文件夹,但问题仍未解决。我对编程不太熟悉,这是第二次编写相关代码。以下是使用的脚本:
function autoFillGoogleDocFromForm(e) { var timestamp = e.values[0]; var upMail = e.values[1]; var agreement = e.values[2]; var fullName = e.values[3]; var livedName = e.values[4]; var pronouns = e.values[5]; var age = e.values[6]; var birthday = e.values[7]; var contactNumber = e.values[8]; var altEmail = e.values[9]; var degreeProgram = e.values[10]; var yearLevel = e.values[11]; var facebookLink = e.values[12]; var voiceLesson = e.values[13]; var singingExp = e.values[14]; var others = e.values[15]; var graphicDesign = e.values[16]; var aof = e.values[17]; var screeningDateA = e.values[18]; var screeningDateB = e.values[19]; var templateFile = DriveApp.getFileById("19AYo5zEij9iWAN5pBaV8HNgaCwqsaRGvpDYd9X_p1rg"); var templateResponseFolder = DriveApp.getFolderById("1S1yBfh6W30YQD5Jnd72dD8wREVkQund-"); var copy = templateFile.makeCopy(fullName,templateResponseFolder); var doc = DocumentApp.openById(copy.getId()); var body = doc.getBody(); body.replaceText("{{AOF}}", aof); body.replaceText("{{Name}}", fullName); body.replaceText("{{Pronouns}}", pronouns); body.replaceText("{{Year}}", yearLevel); body.replaceText("{{Course}}", degreeProgram); body.replaceText("{{LivedName}}", livedName); body.replaceText("{{Age}}", age); body.replaceText("{{Birthday}}", birthday); body.replaceText("{{ContactNumber}}", contactNumber); body.replaceText("{{AltMail}}", altEmail); body.replaceText("{{Facebook}}", facebookLink); body.replaceText("{{UPMail}}", upMail); body.replaceText("{{VoiceLesson}}", voiceLesson); body.replaceText("{{SingingExp}}", singingExp); body.replaceText("{{Others}}", others); body.replaceText("{{GraphicDesign}}", graphicDesign); doc.saveAndClose(); }
排查与解决步骤
第一步:修复Google Sheet与Form的同步问题
Sheet不同步会导致表单提交触发器无法触发,这是核心前提:
- 打开Google Form,点击右上角「响应」标签,点击「关联表单」的表格图标,确认选中的是目标Sheet。若未关联,重新选择关联;若已关联,尝试断开后重新绑定。
- 检查Sheet权限:确保你的账号拥有编辑权限,且Form响应设置中未开启「限制收集」类选项(比如仅收集特定邮箱但未允许同步)。
第二步:检查脚本触发器配置
脚本需要绑定「表单提交」触发器才能自动运行:
- 打开关联的Google Sheet,点击「扩展程序」→「Apps Script」进入脚本编辑器。
- 点击左侧时钟样式的「触发器」图标,检查是否存在符合以下配置的触发器:
- 函数:
autoFillGoogleDocFromForm - 事件源:「表单提交」
- 事件类型:「来自表单的提交」
- 函数:
- 若无该触发器,点击「添加触发器」,按上述配置选择后保存,保存时需授权脚本访问Drive和Docs,务必完成授权。
第三步:验证脚本关键信息
- 核对文件/文件夹ID:打开模板Doc和目标文件夹,地址栏中
d/后的字符串即为ID,确认代码中templateFile和templateResponseFolder的ID与实际完全一致,无字符遗漏或多余。 - 避免空文件名:若表单「全名」字段可能为空,
makeCopy用空字符串命名会导致Doc生成失败或名称异常,修改复制行代码:var copy = templateFile.makeCopy(fullName || "未命名响应", templateResponseFolder);
第四步:手动测试脚本逻辑
添加测试函数验证脚本本身是否正常:
function testAutoFill() { // 模拟表单提交的测试数据,按你的表单字段顺序填写 var testValues = [ "2024-05-20 10:00:00", "test@example.com", "同意", "测试姓名", "测试常用名", "she/her", "21", "2003-05-20", "987654321", "test_alt@example.com", "软件工程", "大三", "https://facebook.com/testuser", "否", "1年", "曾参加校园歌唱比赛", "不会", "AOF测试项", "2024-05-27", "2024-05-28" ]; autoFillGoogleDocFromForm({values: testValues}); }
- 在脚本编辑器中选择
testAutoFill函数,点击运行按钮,查看目标文件夹是否生成Doc。 - 若运行失败,查看左侧「执行」图标下的日志,根据报错信息修复(比如权限不足、模板Doc不存在等)。
内容的提问来源于stack exchange,提问作者Yonina Aisha Garcia
相关产品推荐
相关产品推荐

