Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用谷歌应用程序脚本重置谷歌表单计数器值_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Google apps script 如何使用谷歌应用程序脚本重置谷歌表单计数器值

Google apps script 如何使用谷歌应用程序脚本重置谷歌表单计数器值,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我有几个谷歌表单,它们经常被重复使用,每次提交大约300-400个表单 到目前为止,我有两种手动重置表单的方法: 在保持表单编辑器打开的同时删除表单。 选择包含表单提交的行,右键单击并选择“删除…行” 对于脚本,我很难找到像form.reset()这样的方法。 方法.DeleteRows(fromRow,to Row)只删除行,但不影响计数器 那么,如何使用Google apps脚本自动执行“重置表单”任务呢?或者,如何在脚本中模拟第二种方式 谢谢大家! 谷歌表单创建了一个新的表单编辑器(几周前

我有几个谷歌表单,它们经常被重复使用,每次提交大约300-400个表单

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

  • 在保持表单编辑器打开的同时删除表单。
  • 选择包含表单提交的行,右键单击并选择“删除…行”
  • 对于脚本,我很难找到像
    form.reset()
    这样的方法。 方法
    .DeleteRows(fromRow,to Row)
    只删除行,但不影响计数器

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


    谢谢大家!

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


    注意:谷歌应用程序用户还不能使用这个新的表单编辑器。

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

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

    不管怎样,这里是我所拥有的,包括前后截图。可以通过传入要删除的行数来调用
    tidy()
    函数,也可以从此处演示的菜单中调用该函数。此脚本的更完整版本为

    之前

    在期间

    之后

    谢谢您的回复:)因为我将输入表与其他表链接,这是相当多的公式。重新创建表单或将其链接到其他工作表将导致公式中断。这就是我考虑脚本选项的原因之一。@Phil-新表单提供的不仅仅是一个新的编辑器-变化更深刻。电子表格中显示的响应是现在存储在表单服务中的源数据的副本,而在旧表单中,ss是唯一的存储。如果您从工作表中“查看回复”,则报告来自表格-不包括工作表中的更改/更正。同样,“删除所有响应”操作警告“已发送到电子表格的响应将不会被删除”。因此,要同时清除表单响应和工作表,现在需要两个操作……目前没有表单API,但是。这适用于旧表单,您是对的,但新表单似乎不再如此,计数器不再出现在电子表格中,删除“灰色添加行”没有任何效果(至少在我的测试中是这样)。。。不管怎么说,我认为问题是关于遗留形式的,所以现在这不在主题范围之内+1对于这个清晰的演示:-)-注意:您可以通过提供删除最后一个答案的功能来改进它,而不仅仅是删除第一个答案(或者更好:通过选择起始编号来删除任何答案)。谢谢,@Serge。我把一个更完整的版本放在一个要点中——它可以删除所有行。虽然我(或任何想要删除的人)可以对从何处开始删除更具选择性,但我假设最古老的响应是最容易消耗的。至于新表单,如果表单中包含响应而不是电子表格,那么这将不起作用。可以添加到。谢谢@Mogsdad,我已经尝试了您的代码并对其进行了一些调整,它工作了,不仅删除了行,还更新了表单计数器:
    //resetInput var shInput=ss.getSheetByName('Input');LastInput=shInput.getLastRow();ss.toast('LastInput在行:'+LastInput)//确认最后一行shInput.deleteRows(2,LastInput-1)
    
    /**
     * 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);
    }