Google apps script 从电子表格中删除空行
我有一个电子表格,我想删除复选框标记为TRUE的行的内容。如果删除这些行,则它们在其他行之间保持为空。现在我想以相同的顺序向上移动所有行,中间不要有空行 由于简单,我尝试了排序,但这会洗牌剩余的数据Google apps script 从电子表格中删除空行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个电子表格,我想删除复选框标记为TRUE的行的内容。如果删除这些行,则它们在其他行之间保持为空。现在我想以相同的顺序向上移动所有行,中间不要有空行 由于简单,我尝试了排序,但这会洗牌剩余的数据 function cleanRange() { var sheet = SpreadsheetApp.getActive().getSheetByName('Open'); var data = sheet.getRange('E:E').getDisplayValues(); var range
function cleanRange() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Open');
var data = sheet.getRange('E:E').getDisplayValues();
var range = [];
data.forEach(function(e, i){
if (e[0] == "TRUE") range.push(("C" + (i + 1)),("D" + (i + 1)),("E" + (i + 1)) );
});
sheet.getRangeList(range).clearContent();
sheet.sort(3, false);}
目标:
用于删除复选框设置为“TRUE”的行的脚本
代码:
说明: 当前脚本正在清除每行的内容,然后尝试对列进行排序。这会导致由于排序步骤而重新排列数据 相反,您可以删除有问题的行并完全删除排序步骤 我添加了一个
for
语句来从下到上扫描数组(如果从上到下扫描,则会删除有效数据),然后添加一个if
语句来检查值是否为真。当满足if
语句时,将删除相应的行
参考:
deleteRow()
,而不是清除内容然后进行排序。或者,我会有一个用于写入和更新的所有/原始数据的工作表,然后有另一个带有选择条件的工作表,并作为查询函数的结果进行排序。没问题,如果这个答案已经解决了你的问题,请考虑将它标记为接受。这可能有助于解决同一问题的未来用户更快地找到解决方案。
function deleteEmptyRows() {
var sheet = SpreadsheetApp.getActive().getSheetByName('blank');
var data = sheet.getRange('E:E').getDisplayValues();
for (i = data.length - 1; i >= 2; i--) {
if (data[i][0] === 'TRUE') {
sheet.deleteRow(i + 1);
}
}
}