2

我有几个经常重复使用的 Google 表单,每次提交大约 300 - 400 个表单。

到目前为止,我有两种手动重置表单的方法:

  1. 在保持表单编辑器打开的同时删除表单。
  2. 选择包含表单提交的行,右键单击并选择“删除...行”。

使用脚本,我没有找到像form.reset(). 该方法.DeleteRows(fromRow, to Row)只是删除行,但不影响计数器。

那么,如何使用 Google Apps 脚本自动执行“重置表单”任务?
或者,如何在脚本中模仿第二种方式?

谢谢!

4

2 回答 2

2

Google 表单创建了一个新的表单编辑器(仅在几周前发布)。这个新的表单编辑器有一个“删除所有回复”选项。因此,一种选择是在新的表单编辑器中重新创建表单。(从新电子表格中,单击工具 > 创建表单)。

注意: Google Apps 用户还不能使用这个新的表单编辑器。

于 2013-02-22T09:40:51.947 回答
1

我有一个可行的解决方案,它使用deleteRows(). 我不确定为什么这对你不起作用,看看你的代码会很有趣。

新的 Forms 产品(2013 年 2 月)与旧表单完全不同 -此解决方案仅适用于旧表单

无论如何,这就是我所拥有的,前后截图。该tidy()函数可以通过传入要删除的行数来调用,或者您可以从菜单中调用它,如此处所示。此脚本的更完整版本可作为 gist 获得

/**
 * Standard onOpen provided in script template.
 */
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{name : "Read Data",functionName : "readRows"},
                 {name : "Tidy Form Responses", functionName : "tidy"}];
  sheet.addMenu("Script Center Menu", entries);
};

/**
 * Prompt user for the number of form response rows to remove, then delete them.
 * Assumes that the form responses are in the active sheet, that there is one
 * row of 'headers' followed by responses (in row 2).
 *
 * @param {number} thisMany (Optional) The number of rows to remove. If not
 *                          specified, user will be prompted for input.
 */
function tidy(thisMany) {
  if (tidy.arguments.length == 0) {
    thisMany = Browser.inputBox("How many responses should be tidied?");
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.deleteRows(2, thisMany);
}

带有表单响应和自定义菜单的电子表格

期间

脚本操作,inputBox

电子表格少了 2 个表单响应

于 2013-02-22T16:20:06.760 回答