如何在 Google 表单/表格中编辑表单提交的响应?

Posted

技术标签:

【中文标题】如何在 Google 表单/表格中编辑表单提交的响应?【英文标题】:How do I edit the response of a form submission in Google Forms/Sheets? 【发布时间】:2016-10-12 15:16:25 【问题描述】:

最近,我一直在进行一项调查。我开始在 Excel Forms Online 中创建它,但在我意识到它的几个缺点后切换到 Google Forms。我遇到了一些障碍,但我认为我已经准备好了。

不幸的是,我开始在表单中添加问题并更改响应(拼写错误等),这开始导致一大堆问题。如果适用,我必须返回并询问用户对新问题的回答就足够了。更糟糕的是我根本无法修改提交。我无法编辑连接到表单的电子表格,因为结果存储在表单中。如果我重新生成电子表格,那么表单中提交的响应将替换之前的任何内容。所以我根本无法编辑电子表格。

我一直在寻找一种方法来尝试手动编辑用户提交的回复。我找到了资源here on Stack Overflow 和here on Google Groups at the Products Forum,但不幸的是,我尝试了所有示例,但没有一个有效(是的,我将表单的 URL 放入所有内容中,并将名称替换为电子表格名称)。

我填写信息后继续收到的错误是TypeError: Cannot call method "getDataRange" of null. (line 8, file "Code")。但这张纸不是空的,我知道。

是否有其他方法可以完成这项工作,或者有更好的方法来编辑工作表响应?

目前执行此操作的唯一方法是手动返回并再次以该用户的身份重新提交表单。这有点痛苦,因为它需要 10 分钟的检查框和复制粘贴。另外,昨晚我不小心跳过了复制 1 个字符,现在我必须从头再来。

从我在网上看到的情况来看,这是可以做到的,但我没有尝试过。该表格目前处于活动状态并正在接受回复。任何解决方案都是可以接受的,只要有办法编辑他们的回复,无论是使用脚本还是其他工具,所以我不需要自己手动重新做所有事情。

【问题讨论】:

我认为 UrlFetchApp.fetch(url) 需要用于发出 HTTPS GET 或 POST 请求以编辑表单中的数据。其中url 是进行编辑的网址。我删除了我以前的 cmets。 我找不到任何“内置”方式来使用代码编辑现有响应。当编辑发送到表单时,我一直在尝试找出 url 和有效负载,但没有任何确定的内容。 @SandyGood:代码中有一个答案可以做到这一点,但它不再起作用了。见***.com/questions/20410497/… 错误不是说您的工作表没有数据,而是说您尝试使用getDataRange() 的对象为空。正如@Rubén 建议的那样:我们需要查看更多代码才能了解原因。 相关(如果表单连接到电子表格):webapps.stackexchange.com/questions/89551/… 【参考方案1】:

code suggested here 有效,因为我刚刚在 2017 年 2 月 13 日亲自尝试过。

这是我为使其工作而遵循的步骤

首先,像要编辑表单一样加载表单。 在地址栏中的 url 中查找表单的“表单 ID”。它应该看起来像这样:

https://docs.google.com/... /forms/d/1ZIrWiRZQrUsz1y8OBoeB7AtCOM4Ax4FxAQm8xAR1OYo/edit

所以本例中的 id 应该是“1ZIrWiRZQrUsz1y8OBoeB7AtCOM4Ax4FxAQm8xAR1OYo” 现在去https://script.google.com

Code.js 部分中显示的所有文本替换为以下内容,在您对其进行编辑后,将您的表单 ID 替换为下面的 YOUR_FORM_ID_HERE。

function dumpEditResponseUrlsForYourForm() 
   // Change this next line to use the id of your form
   var myFormId = "YOUR_FORM_ID_HERE";

   var form = FormApp.openById(myFormId); 
   var formResponses = form.getResponses();
   for (var i = 0; i < formResponses.length; i++) 
     var formResponse = formResponses[i];
     Logger.log(formResponse.getEditResponseUrl());
   

在 Google 脚本网页中单击“查看 | 日志”。它会弹出一个窗口,其中包含指向您的表单回复的链接。

【讨论】:

如果需要,可以在这里找到改进的版本:webapps.stackexchange.com/a/89566/151861 这真是太棒了!谢谢! 我首先得到“未找到日志。使用 Logger API 将日志添加到您的项目。”原来我需要点击“运行”>运行功能>dumpEditResponseUrlsForYourForm然后授予权限,然后它就起作用了。

以上是关于如何在 Google 表单/表格中编辑表单提交的响应?的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Apps 脚本中提交 HTML 表单时如何发送地理定位和输入

限时后自动提交谷歌表格

这可能吗?从 PDF 到可编辑表单

生成超链接以预先填充Google表单

如何在奏鸣曲编辑表单中显示字段值?

提交表单后发送电子邮件的 Google 表单应用脚本