0

我已经尝试并结合了一些脚本来删除行,但这不会重置计数器。帮助重置响应将不胜感激。

我的复制表功能和删除所有行功能有效,但计数器仍然存在,显示 58 个响应。

我使用触发器将复制和删除功能设置为每天发生。(表格网址不包括“docs.google.com ...” 0AvTM4SfinH2NdGp1MHdzWms2QnpUMnFiMHJXd1dlV1E&usp)这是我目前所拥有的:

function CopySheet() {
    var sh = SpreadsheetApp.getActiveSpreadsheet();
    var ss = sh.getSheets()[0];// here I chose to always get the first sheet in the spreadsheet
    var inputRange = ss.getRange(1,1,ss.getLastRow(),7);
    var data = inputRange.getValues();
    var newData = [];

    newData.push(['Timestamp','Full Name?','Email?','RAG']);
    for(var n=1;n<data.length;++n){ // skip headers by starting at 1
      for(var c=0;c<7;c=c+3){
         var row = [];
         if(c==0){row.push(data[n][0]) ; c++}else{row.push('')};
         row.push(data[n][c])
         row.push(data[n][c+1]);
         row.push(data[n][c+1+1]);//Keep adding a new row and +1 for each extra column
         newData.push(row);
      }
    }

    //This next bit creates a copy of the sheet. I would rather a spreadsheet copy but could only get document copy to work
    sh.insertSheet().getRange(1,1,newData.length,newData[0].length).setValues(newData);
    var doc = DocumentApp.create('Responses document'); // create document
    var file = DocsList.getFileById(doc.getId());
    file.removeFromFolder(DocsList.getRootFolder());
    file.addToFolder(DocsList.getFolder("Folder 1"));

    var table = doc.getBody().appendTable(newData); // create table in a separate process so I can set the style below
    var style = {};
    style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER; // this one has no effect
    style[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.ARIAL;
    style[DocumentApp.Attribute.FONT_SIZE] = 10;
    style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#0000ff';
    style[DocumentApp.Attribute.BORDER_COLOR] = '#dddddd' ;
    table.setAttributes(style);
}

//This section deletes the sheet, leaving the headers; "function deleteAllResponses()" at the bottom should reset counter but does not work
function DeleteSheet() {
    SpreadsheetApp.flush();

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];
    var datarange = sheet.getDataRange();
    var lastrow = datarange.getLastRow();
    var values = datarange.getValues();// get all data in a 2D array

    for (i=lastrow;i>=2;i--) {
        var tempdate = values[i-1][2]; // arrays are 0 indexed so row1 = values[0] and col3 = [2], If I add more columns I need to up this number
        {
            sheet.deleteRow(i);
            function deleteAllResponses() {}
        }
    }
}
4

2 回答 2

2

如果您指的是表格上显示的计数器回复:

在此处输入图像描述

一种选择可能是使用Class Form中的deleteAllResponses()(仔细阅读文档)。

一个最小的实现可以是:

/* CODE FOR DEMONSTRATION PURPOSES */
function deleteAllResponses() {
  var form, urlForm = SpreadsheetApp.getActiveSpreadsheet().getFormUrl();
  if (urlForm) {
    form = FormApp.openByUrl(urlForm);
    if (form) form.deleteAllResponses();
  }
}
于 2013-10-09T13:08:15.753 回答
0

@user2847142,@brian-tompsett,@wchiquito

新的 Google 表单允许您在不需要脚本的情况下从 Google 表单本身中删除单个回复。
现在有一个比@wchiquito 给出的答案更简单的方法。

--现在可以在新的 Google 表单上使用 --

Google 于 2016 年 2 月 10 日发布的公告。 (googleappsupdates.blogspot.com/2016/02/new-google-forms-now-default-option.html)

如何删除所有回复:

删除所有回复

如何删除个人回复:

删除个人

要删除个人回复,请单击“回复”选项卡并选择“个人”。您找到要删除的记录,然后单击垃圾桶图标以删除该单独的响应。
这也将重置计数器
然而。不会从连接到表单电子表格中删除响应。您将不得不手动删除那些(或使用脚本)。

于 2016-03-30T20:38:20.820 回答