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

17

最近,我一直在进行一项调查。起初我是在Excel Forms Online上创建的它,但后来发现了一些不足之处,就转而使用Google表单。虽然遇到了一些问题,但我还是以为一切都准备好了。

不幸的是,当我开始添加问题和更改回答(如拼写错误等)时,出现了许多问题。这已经足够令人头疼了,因为我不得不回去询问用户对新问题的回答(如果有的话)。更糟糕的是,我完全无法修改提交的回答。我不能编辑与表单相连接的电子表格,因为结果存储在表单中。如果我重新生成电子表格,则表单中提交的响应将替换之前的内容。所以我根本无法编辑电子表格。

我一直在寻找一种手动编辑用户提交响应的方法。我在Stack Overflow上找到了一个资源(点此),在产品论坛的Google Groups上也找到了一个(点此),但不幸的是,我尝试了所有示例,但都没有成功(是的,我已经将我的表单URL和所有名称替换成了电子表格名称)。

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

有没有其他方法可以使这个工作正常,或者有更好的方法来潜在地编辑电子表格中的回答?

现在唯一的方法就是手动返回并再次作为该用户提交表单。这有点麻烦,因为要花费10分钟勾选方框并复制和粘贴。而且,昨晚我不小心跳过了复制1个字符,现在我必须重新开始。

根据我在网上看到的,这是可行的,但我尝试过的任何方法都没有奏效。该表单目前正在运行并接受响应。任何解决方案都可以接受,只要有一种方法可以通过脚本或其他工具编辑他们的响应,这样我就不需要手动重新完成所有操作。


我认为需要使用UrlFetchApp.fetch(url)来进行HTTPS GET或POST请求以编辑表单中的数据。其中url是执行编辑操作的网址。我已删除之前的评论。 - Alan Wells
我找不到任何“内置”的方法来使用代码编辑现有的响应。我一直在尝试找出当编辑被发送到表单时的URL和负载,但还没有得到确定的结果。 - Alan Wells
1
@SandyGood:有一个包含代码的答案可以实现这个功能,但是它已经不能工作了。请参考https://dev59.com/13nZa4cB1Zd3GeqPwO3G#20510224。 - Rubén
@InterLinked:关于您的代码获取编辑响应URL时出现的错误,请添加更多细节。同时检查[mcve]。 - Rubén
1
错误并不是说你的表格没有数据,而是说你试图在空对象上使用getDataRange()。正如@Rubén所建议的那样:我们需要看更多的代码才能知道原因。 - Mogsdad
1
相关(如果表单连接到电子表格):http://webapps.stackexchange.com/questions/89551/show-url-used-to-edit-responses-from-a-google-form-in-a-google-spreadsheet-by-us - Sphinxxx
1个回答

21

这里建议的代码是可行的,因为我在2017年2月13日亲自尝试过。

以下是我遵循的步骤

  • 首先,加载您的表单,就好像您要编辑该表单一样。
  • 在地址栏中查找您的表单的“表单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 Script 网页中点击 "查看 | 日志"。它将弹出一个窗口,其中包含到您表单响应的链接。

3
如果需要,可以在这里找到改进版本:http://webapps.stackexchange.com/a/89566/151861 - Dvir Berebi
1
这真的很棒!谢谢你! - aaiezza
1
我最初收到了“未找到日志。使用Logger API将日志添加到您的项目。”结果我需要点击“运行”>“运行函数”>“dumpEditResponseUrlsForYourForm”,然后授予权限,然后它就可以工作了。 - krubo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接