将根据特定条件调整(添加或删除)行的 Google 表格脚本
Posted
技术标签:
【中文标题】将根据特定条件调整(添加或删除)行的 Google 表格脚本【英文标题】:Google Sheets Script that will adjust (add or remove) rows based on certain conditions 【发布时间】: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;
-
需要一个能够自动删除空行的脚本
需要一个能够自动添加行和复制顶部行公式的脚本
这是我为更好地理解我的意思而创建的示例表:https://docs.google.com/spreadsheets/d/1VU8PsCGcomh3xf3BMI2TUNbnE8UI1RmRpPg4tdrG9Ow/edit?usp=sharing
【问题讨论】:
【参考方案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 列中的单元格可能为空,但这些行在其他列中有条目。在这种情况下,您需要确定哪个是关键列来确定整行为空 - 或测试每一行的所有列 - 这会使您的代码变慢。
【讨论】:
以上是关于将根据特定条件调整(添加或删除)行的 Google 表格脚本的主要内容,如果未能解决你的问题,请参考以下文章