【问题标题】:How do I create a loop to delete all rows after 450?如何创建一个循环来删除 450 之后的所有行?
【发布时间】:2013-11-13 17:30:26
【问题描述】:

我正在处理从谷歌表单填充的电子表格。我想出了如何在每周之后删除所有数据以重置表单和电子表格。我面临的问题是表单为每个条目添加了新行。最终电子表格将达到​​行数限制,但我需要该表格继续使用几年。到目前为止我的代码是:

herefunction clearRange() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Form Responses 1');
  sheet.getRange('A8:V100').clearContent();

  for (row>=451; row<1000; row++) {
  sheet.deleteRow(451)
}
}

当它解决时,它给了我一个错误提示:ReferenceError: "row" is not defined。我是编程界的新手,希望能得到任何帮助。

【问题讨论】:

  • 我认为row&gt;=451(在循环初始化中)应该是var row=451

标签: for-loop google-apps-script google-spreadsheet-api delete-row


【解决方案1】:

虽然另一个答案运行缓慢,并且在有很多行时会中断。 使用 deleteRows 来通过一次调用将它们全部删除。 https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteRows(Integer,Integer)

【讨论】:

    【解决方案2】:
    function clearRange() {
    
            var sheet = SpreadsheetApp.getActive().getSheetByName('Form Responses 1');
            var rows = sheet.getDataRange();
            var numRows = rows.getNumRows();
            sheet.getRange('A8:V100').clearContent();
    
            for (var row=451; row <= numRows; row++) {
                sheet.deleteRow(row);
            }
        }
    

    【讨论】:

    • 感谢您的帮助。它删除了大约 100 行,然后给出了错误:那些行超出了范围。它让我更接近一个我很感激的解决方案。通过多次运行它会删除大约另外 100 个。不知道为什么它会给出错误。
    • 我编辑了我的答案,这应该更合适。
    • 感谢您的帮助。它完全符合我的需要。
    • 您应该从最后一个到第一个向后删除它们以提高性能。也可能超出范围。
    • 对 API 的数百次调用绝不是一个好主意。参考@ZigMandel 的回答……更合适。
    猜你喜欢
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2012-07-06
    相关资源
    最近更新 更多