如何解决如何从 Google Form 链接到 Google Sheet? 探索制作副本功能,但我需要与原始所有者共享 针对您的用例的解决方案是使用 Apps 脚本代码说明设置参考
我在这里发帖是因为我希望有人可以帮助我编辑指向 Google 表格的链接。我一直无法在网上找到答案,但我希望也许有人比我更了解链接的工作原理,并且可以给我一个答案。
我的任务是更新资金申请(来自非营利组织)以包含预算类别。该应用程序在 Google 表单中,但无法在表单中插入表格供申请人填写。我在 Google 表格中创建了预算大纲,但现在我正在尝试找到最佳解决方案,在表单中创建一个单独的链接,将他们引导到预算文档。从本质上讲,我希望申请人可以填写表格,当他们到达有关预算的部分时,我希望他们点击谷歌表格的链接,制作一份副本,但要与他们共享副本组织的 Google 帐户,以便我们在他们提交申请时可以看到。
我已经尝试了强制复制功能(通过 google 编辑共享链接),但是当我使用与所有者不同的 google 帐户对其进行测试时,它告诉我必须请求许可。共享设置设置为允许任何拥有链接的人访问,所以我不明白为什么在我打开强制复制链接时要求我请求权限。这是行不通的,因为申请人在申请时需要访问它,我们不能让他们每次都等待我们接受请求。
我相信可能有一些解决方案,所以我愿意接受任何建议。我能想到的唯一其他解决方案是为每个申请人创建单独的链接,如果有办法实现自动化吗?
我知道可能有一个解决方案,我要求申请人下载文件并重新上传,或自己共享,但我们的申请人不是英语母语人士,而且他们通常对技术不太熟悉,所以我想要尽可能使流程自动化。
总结:申请人应该能够
感谢您的考虑!
解决方法
针对您的用例的解决方案是使用 Apps 脚本。
Apps Script 是一个强大的开发平台,可用于构建网络应用和自动执行任务。它的特别之处在于它易于使用并且可以创建与 G Suite 集成的应用程序。
考虑到这一点,您可以创建一个脚本,该脚本将在提交新表单时创建文档副本,并为用户添加所需的权限。从本质上讲,您也将拥有该表格的副本,并且候选人将拥有编辑权限。
因此,该脚本最终将看起来类似于以下内容:
代码
function onFormSubmit() {
let sheetId = 'ORIGINAL_SPREADSHEET_ID';
let form = FormApp.getActiveForm();
let responses = form.getResponses();
let n = responses.length;
let currentUser = form.getResponse(responses[n-1].getId()).getRespondentEmail();
let newSpreadsheet = SpreadsheetApp.openById(sheetId).copy("Sheet copy for " + currentUser);
let newSpreadsheetId = newSpreadsheet.getId();
DriveApp.getFileById(newSpreadsheetId).addEditor(currentUser);
}
说明
以上代码段利用了 Apps 脚本的 onFormSubmit
可安装触发器。基本上,每当发送新的表单提交时,上面的代码就会运行。该代码将检索提交的最后一个响应,并通过使用 getRespondentEmail
方法获取用户的电子邮件地址。之后,将创建原始电子表格的副本,并在 编辑者 权限下与刚刚提交表单的用户共享。添加权限是通过使用 addEditor
父类中的 DriveApp
方法完成的。至于访问电子表格副本的用户,这很容易完成,因为用户最终会收到一封电子邮件,告诉他们电子表格已与他们共享。
设置
- 您必须为表单选中收集电子邮件选项;
- 打开三点图标并点击脚本编辑器;
-
打开脚本编辑器后,输入上面的代码,不要忘记修改
sheetId
,使其与要共享的原始电子表格的 ID 匹配。 -
转至触发器页面安装
onFormSubmit
触发器并使用以下选项创建新触发器:
- 将 URL 表单发送给候选人并等待提交。
参考
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。