【问题标题】:Google Sheets Script that will adjust (add or remove) rows based on certain conditions将根据特定条件调整(添加或删除)行的 Google 表格脚本
【发布时间】:2020-10-29 11:21:35
【问题描述】:

我正在处理从另一个工作表中提取数据的 Google 工作表表格。我正在使用的表使用 UNIQUE FILTER 函数,因此我只能根据某些条件显示列表。某些条件需要更多列表,因此需要更多行,而某些条件需要更少,因此需要更少行。我想根据这些来调整我表上的行数。

我想出了这个脚本来删除空白行,问题是它只在最后一行有值之后删除空白行。它不会删除具有值的行之间的空白行。

function removeEmptyRows() {
    var ss = SpreadsheetApp.getActive();
    var allsheets = ss.getSheets();
    for (var s in allsheets) {
        var sheet = allsheets[s]
        var maxRows = sheet.getMaxRows();
        var lastRow = sheet.getLastRow();
        if (maxRows - lastRow != 0) {
            sheet.deleteRows(lastRow + 1, maxRows - lastRow);
        }
    }
}

我似乎也无法编写一个脚本,当条件导致更多数据和行要求时自动追加新行。

TLDR;

  1. 需要一个能够自动删除空行的脚本
  2. 需要一个能够自动添加行和复制顶部行公式的脚本

这是我为更好地理解我的意思而创建的示例表:https://docs.google.com/spreadsheets/d/1VU8PsCGcomh3xf3BMI2TUNbnE8UI1RmRpPg4tdrG9Ow/edit?usp=sharing

【问题讨论】:

    标签: javascript google-sheets spreadsheet


    【解决方案1】:

    要删除中间的空行,您需要查询所有行,或者它们是空的

    一种方法是获取data range 每一行的第一个单元格(A 列),并定义如果A 为空,则将整行视为空。

    示例:

    function removeEmptyRows() {
      var ss = SpreadsheetApp.getActive();
      var allsheets = ss.getSheets();
      for (var s in allsheets) {
        var sheet = allsheets[s];
        var data = sheet.getDataRange().getValues();
        for(var i = data.length; i > 0; i--){
          var maxRows = sheet.getMaxRows();
          var lastRow = sheet.getLastRow();
          if (maxRows - lastRow != 0) {
            sheet.deleteRows(lastRow + 1, maxRows - lastRow);
          }
          var maxRows = sheet.getMaxRows();
          var lastRow = sheet.getLastRow();
          if (data[i-1][0] == "") {
            sheet.deleteRow(i);
          }
        }
      }
    }
    

    您需要判断它是否适合您。 也许在您的情况下,A 列中的单元格可能为空,但这些行在其他列中有条目。在这种情况下,您需要确定哪个是关键列来确定整行为空 - 或测试每一行的所有列 - 这会使您的代码变慢。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 2023-02-10
      • 2019-11-01
      • 2011-06-29
      • 2022-01-09
      • 2021-06-09
      • 2022-11-25
      • 1970-01-01
      相关资源
      最近更新 更多