Google Sheets脚本将根据特定条件调整(添加或删除)行



我正在处理一个Google Sheet表,该表正在从另一个表中提取数据。我正在处理的表使用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

要删除中间的空行,需要查询所有行,要么它们都是空的

一种方法是取数据范围每行的第一个单元格(列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中的单元格可能是空的,但行在其他列中有条目。在这种情况下,您需要决定哪一列是关键列,以决定整行为空,或者测试每行的所有列,这会使代码速度变慢。

最新更新