每天需要删除200-300行数据。单击菜单项,我想删除所有这些行。我已经有了一个似乎部分工作的脚本(它只删除了几行......但是我没有这么做了)我应该说。希望有人可以为加快进程或提供新的代码设计提供一些启示,
**如果可能排除ROW_1
function clearRange() {
var sheet = SpreadsheetApp.getActive().getSheetByName('test');
var start=1;
var end=300;
for (var i = start; i <= end; i++)
{ sheet.deleteRow(i); }
}
答案 0 :(得分:19)
不要使用for
循环。您可以在一次操作中删除Google电子表格中的多个行:
var start, end;
start = 2;
end = sheet.getLastRow() - 1;//Number of last row with content
//blank rows after last row with content will not be deleted
sheet.deleteRows(start, end);
答案 1 :(得分:3)
FYI:getLastRow()返回最后一行WITH内容的索引。使用getMaxRows()返回绝对的最后一行(无论内容如何)。
答案 2 :(得分:0)
如果要删除所有行,可以使用clear函数。
// This example assumes there is a sheet named "first"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var first = ss.getSheetByName("first");
first.clear();
答案 3 :(得分:0)
使用Alan Wells的答案时要注意!
getLastRow()
返回包含内容的最后一行的 索引 。
但是,deleteRows(rowPosition, howMany)
中的第二个参数是 要删除的行数 ,而不是最后一行的索引。
因此,要删除特定行之后的所有非空白行,您必须执行以下操作:
function deleteAllBelow(startFrom)
{
// get last row index
var lastRowWithContent = sheet.getLastRow();
if(lastRowWithContent < startFrom)
{
// rows below startFrom are already blank!
return;
}
// count total number of rows to be deleted
// +1 is to include the last row
var totalRowsToBeDeleted = lastRowWithContent - startFrom + 1;
sheet.deleteRows(startFrom, totalRowsToBeDeleted);
}
假设最后一行内容为20。
现在deleteAllBelow(15);
将从15到20删除所有非空白行,而totalRowsToBeDeleted
将是6(因为同时包含15和20 )。
这也可以解决起始行或起始行以下没有非空白行的情况。