如何在Google Form中添加Google Sheet链接 自动生成共享给原所有者的副本
Google Form 关联预算表自动化解决方案
方案1:修复强制复制链接权限问题
你之前遇到强制复制链接需要申请权限的问题,大概率是共享配置或链接修改有误,按以下步骤调整即可解决:
- 打开预算模板Google Sheet,点击右上角「共享」,在「通用访问」选项中选择知道链接的任何人可查看,确认保存后等待2-3分钟让配置生效
- 复制模板的默认共享链接,格式为
https://docs.google.com/spreadsheets/d/[文档ID]/edit?usp=sharing - 将链接末尾的
edit?usp=sharing替换为copy?usp=sharing©Collaborators=false©Comments=false,修改后的链接就是可用的强制复制链接,用户点击后可直接生成个人副本,无需申请权限
该方案的局限性是用户生成副本后需要手动共享给机构账号,不符合全自动化需求,推荐使用方案2。
方案2:Google Apps Script 全自动化流程
该方案完全不需要申请人额外操作,所有权限配置、文档生成都自动完成:
前置准备
- 在Google Form中添加必填的「申请人电子邮箱」字段
- 给Google Form绑定对应的响应Google Sheet,用于存储提交数据和生成的预算表链接
步骤1:添加脚本
- 打开Google Form,点击右上角三个点,选择「脚本编辑器」
- 删除默认空白代码,粘贴以下代码,按注释替换对应的参数:
// 替换为你的预算模板Google Sheet的文档ID const TEMPLATE_ID = "替换为你的模板文档ID"; // 替换为机构官方谷歌账号邮箱 const ORG_EMAIL = "your-org@example.com"; // 替换为表单响应表的文档ID const RESPONSE_SHEET_ID = "替换为你的响应表ID"; // 替换为你要存预算链接的列号(比如第5列就填5) const LINK_COLUMN = 5; function onFormSubmit(e) { // 获取申请人提交的邮箱 const applicantEmail = e.response.getRespondentEmail(); // 获取申请人姓名(如果没有姓名字段可以删除这行) const applicantName = e.response.getItemResponses().find(i => i.getItem().getTitle() == "申请人姓名").getResponse(); // 复制生成新的预算表 const templateFile = DriveApp.getFileById(TEMPLATE_ID); const newBudgetSheet = templateFile.makeCopy(`资助预算-${applicantName || applicantEmail}`); // 配置权限:申请人可编辑,机构账号可编辑 newBudgetSheet.addEditor(applicantEmail); newBudgetSheet.addEditor(ORG_EMAIL); const sheetUrl = newBudgetSheet.getUrl(); // 给申请人发邮件告知预算表链接 MailApp.sendEmail({ to: applicantEmail, subject: "资助申请预算表已生成", body: `您好,您的专属预算表链接为:${sheetUrl},填写完成后无需额外操作,我们会自动同步您的填写内容。` }); // 把预算表链接写入响应表,方便你后续关联查看申请 const resSheet = SpreadsheetApp.openById(RESPONSE_SHEET_ID).getSheetByName("表单响应"); const lastRow = resSheet.getLastRow(); resSheet.getRange(lastRow, LINK_COLUMN).setValue(sheetUrl); }
步骤2:配置触发器
- 点击脚本编辑器左侧的「触发器」按钮,选择「添加触发器」
- 事件源选择「表单」,事件类型选择「表单提交时」,保存后按页面提示完成脚本权限授权即可
测试
用非机构账号提交一次表单,确认申请人能正常收到邮件、可直接编辑预算表,机构账号可直接访问该预算表,无需申请权限。
注意事项
- 所有相关文档(模板、表单、响应表)都要存储在机构官方账号的Google Drive中,不要使用个人账号创建
- 如果申请人没有谷歌邮箱,可以在代码中新增一行
newBudgetSheet.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT),实现持链接即可编辑,无需登录 - 你也可以调整代码逻辑,把预算表链接直接展示在表单提交后的确认页,无需给申请人发邮件
内容的提问来源于stack exchange,提问作者Zooey Mathys
相关产品推荐
相关产品推荐

