使用 Google 表单更新现有的 Google 表格
Posted
技术标签:
【中文标题】使用 Google 表单更新现有的 Google 表格【英文标题】:Use a Google Forms to update existing Google Sheets 【发布时间】:2014-11-27 05:14:28 【问题描述】:我正在尝试构建一个 Google 表单,它使用来自 Google 表单的响应来填写现有 Google 表格的某些单元格。我还需要 Google 表单上的一些答案来自下拉式菜单中的电子表格。
一个组织目前正在使用现有的电子表格让其成员每周记录一些信息,但是,无论我纠正了多少次,一些成员仍然会错误地填写表格。出于这个原因,我试图让这个过程更加自动化。
当前电子表格的设置方式是为组织的不同部门设置多个工作表。在每个工作表中,有一列专用于该部门中的名称,该列的每一行都有不同的名称。还有专门针对特定周的列,因此将第 1 周的信息放入 D 和 E 列,将第 2 周的信息放入 F 和 G 列等。
前:
# |姓名 |百分比 |... 第 1 周 .... |... 第 2 周 .... | ....
1 |.. 鲍勃..| 0%...... ..|信息 1|信息 2 |信息 1|信息2..|
2 | ..乔..| 99%......|信息1.......................
我希望能够:
-
使表单的第一个问题成为选择部门的下拉菜单,然后根据对应于该部门的工作表生成其余问题的信息。
第二个问题下拉菜单选择名称。这些名称将基于电子表格的现有名称列中列出的名称。
一个下拉菜单,用于选择他们提交信息的具体星期。
他们用“信息 1”填写的填框问题。
他们用“信息 2”填写的填框问题。
提交时,表单会根据 (1) 找到正确的工作表,然后根据 (2) 找到正确的行,然后根据 (3) 找到正确的列,然后将 (4) 和 (5) 复制到对应的单元格。
可以这样做吗?还是我需要为每个部门创建一个单独的表格?
我对 Google 脚本一无所知,但我有 C++ 方面的经验,并且对 Python 中的脚本有基本的工作知识。
【问题讨论】:
【参考方案1】:使用现有的 Google 表单很难实现(但并非不可能)。您不能使用 Google Apps 脚本来操纵表单的显示以响应用户操作,就像在您从头开始编写代码的表单上使用 javascript 一样。
Google Apps 脚本可以像在表单编辑器中一样生成和操作表单,它可以在表单提交时触发以对响应采取行动,但它不能直接与用户交互。
要实现您想要的,您有几个选择。
您可以设置一个带有逻辑分支的多页 Google 表单来获得您想要的表单行为,然后使用触发 onFormSubmit() 的 Apps 脚本来负责将数据移动到适当的位置。
或者您可以完全跳过使用现有的 Google 表单,而是使用作为网络应用发布的 Google Apps 脚本来呈现表单,这样您就可以完全控制向用户显示的表单(html、CSS 和 Javascript),但是您无法利用任何 Google 表单功能。您可以使用 doGet() 呈现表单并使用 doPost() 处理提交。
第三种方法是两者的混合,设置几个单独的 Google 表单,并使用作为 Web 应用程序发布的 Apps 脚本来显示第一个下拉菜单并将用户引导到适当的表单。然后,您可以触发每个 Google 表单的 onFormSubmit() 脚本来处理移动数据。
请参阅以下内容:
https://developers.google.com/apps-script/guides/triggers/events#google_forms_events
https://developers.google.com/apps-script/guides/web#deploying_a_script_as_a_web_app https://developers.google.com/apps-script/guides/html/
【讨论】:
感谢您的帮助。在您发表评论之前,我尝试了设置多页谷歌表单的想法。我现在设置的方式是第一个问题询问什么部门,然后根据答案将它们发送到特定页面。我设法通过使用名为 form ranger 的插件来填充 google 表单上的下拉菜单。现在我只需要获取响应表上的值并将它们放入其他表上的适当位置。事实证明这很困难,因为我不知道谷歌应用脚本以上是关于使用 Google 表单更新现有的 Google 表格的主要内容,如果未能解决你的问题,请参考以下文章
如何在现有的旧版Android项目中使用最新的API添加Google Map?
如何在 python 中使用现有的 google chrome 配置文件和 selenium chrome webdriver?
如何将 Spark-BigQuery_connector 用于现有的 spark 环境(不使用 google dataproc)