【问题标题】:Google spreadsheet script deleting new rows谷歌电子表格脚本删除新行
【发布时间】:2014-02-15 05:05:49
【问题描述】:

这真的是我第一次尝试让谷歌脚本工作,所以请原谅我的经验不足。

我有一个电子表格,如果超过特定数量(在我的情况下为 8 个),我想删除它。

我认为这应该可行,但我必须遗漏一些东西。我的问题是没有删除行,但也没有给出错误。

function killNewRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var data = sheet.getDataRange();  

  if (data.length > 8) {
    for (var row = data.length; row >= 9; row--) {
       sheet.deleteRow(row);
      }
    }
  }  

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这种例程有特殊的方法......这是一个工作示例:

    function killNewRows() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
      var lastRow = sheet.getLastRow();
      var maxRow = sheet.getMaxRows();
      if(lastRow>8){
        sheet.deleteRows(9, maxRow-8);
      }
    }
    

    顺便说一句,注意deleteRows(start,numberOfRows) 方法比逐行删除要快。


    编辑:工作表示例here,制作自己的副本,不要忘记从脚本编辑器>资源>添加新触发器>从电子表格> onChange添加触发器。

    您当然可以通过简单地添加一个调用此函数的“更改时”触发器来使这一切自动化。

    【讨论】:

    • 谢谢您的帮助。在添加“更改时”触发器并授权脚本运行它之后,我完全删除了我正在处理的内容并制作了一个新脚本,该脚本完全复制了您所写的内容,但仍然没有为我删除行。可能是我的一些用户错误。
    • 添加:执行记录显示它在此部分之后结束,即使我正在使用它的工作表目前有 28 行 [14-02-14 16:26:33:863 AST] Sheet.getMaxRows() [0.015 秒] [14-02-14 16:26:33:864 AST] 执行成功 [0.422 秒总运行时间]
    • 我用链接编辑了我的答案,请按照关于触发器的建议尝试一下。
    • 谢谢!意识到我在那里错过了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多