如果行在 Google App 脚本中的特定列有空值,如何快速删除行
How to delete rows fast if they have empty values at specific columns in Google App Script
下面的代码检查 [G, H, J] 列的单元格是否为空,并删除条件为真的行。
尽管如此,下面代码的运行时间非常慢,每 1500 table 个条目需要大约 15 分钟。
有什么办法可以优化吗?
我可以对满足以下条件的行进行哈希处理,然后一次性删除它们吗?
P.S:可以在此处找到原始代码https://gist.github.com/dDondero/285f8fd557c07e07af0e,我根据我的用例对其进行了调整。
function deleteRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var lastRow =sheet.getRange(1,1).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow() + 1;
var values = rows.getValues();
var row;
var rowsDeleted = 0;
for (var i = 0; i < lastRow; i++) {
row = values[i];
if (row[9] == '' && row[7] == '' && row[6] == ''
) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
}
尝试:
function DeleteEmptyRows() {
const sheet = SpreadsheetApp.getActiveSheet()
const values = sheet.getDataRange()
.getValues()
.filter(row => row[9] !== '' && row[7] !== '' && row[6] !== '')
sheet.getDataRange().clearContent()
return sheet.getRange(1, 1, values.length, values[0].length)
.setValues(values)
}
如果您有任何附加到行的背景颜色,请告诉我,我可以为您进行调整。
此代码将过滤掉所有包含指定空单元格的行,清除 sheet,然后设置值。
删除行
function deleteRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const rg = sh.getDataRange();
const vs = rg.getValues().filter(r => !(!r[6] || !r[7] || !r[9]));
rg.clearContent();
sh.getRange(1, 1, vs.length, vs[0].length).setValues(vs);
}
下面的代码检查 [G, H, J] 列的单元格是否为空,并删除条件为真的行。 尽管如此,下面代码的运行时间非常慢,每 1500 table 个条目需要大约 15 分钟。 有什么办法可以优化吗? 我可以对满足以下条件的行进行哈希处理,然后一次性删除它们吗?
P.S:可以在此处找到原始代码https://gist.github.com/dDondero/285f8fd557c07e07af0e,我根据我的用例对其进行了调整。
function deleteRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var lastRow =sheet.getRange(1,1).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow() + 1;
var values = rows.getValues();
var row;
var rowsDeleted = 0;
for (var i = 0; i < lastRow; i++) {
row = values[i];
if (row[9] == '' && row[7] == '' && row[6] == ''
) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
}
尝试:
function DeleteEmptyRows() {
const sheet = SpreadsheetApp.getActiveSheet()
const values = sheet.getDataRange()
.getValues()
.filter(row => row[9] !== '' && row[7] !== '' && row[6] !== '')
sheet.getDataRange().clearContent()
return sheet.getRange(1, 1, values.length, values[0].length)
.setValues(values)
}
如果您有任何附加到行的背景颜色,请告诉我,我可以为您进行调整。
此代码将过滤掉所有包含指定空单元格的行,清除 sheet,然后设置值。
删除行
function deleteRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const rg = sh.getDataRange();
const vs = rg.getValues().filter(r => !(!r[6] || !r[7] || !r[9]));
rg.clearContent();
sh.getRange(1, 1, vs.length, vs[0].length).setValues(vs);
}