Google apps script 跨非连续行批处理行删除

Google apps script 跨非连续行批处理行删除,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在编写一个脚本来存档(复制和删除)电子表格中的行 为此,我检查了工作表中的每一行,看它是否已完成 我可以通过收集所有行并在末尾写入值的范围来批处理第一个复制过程 然而,当需要删除行时,我仍然必须循环并为每行调用一次。我无法使用,因为行不是连续的 下面是我尝试使用脚本的一个示例: function archiveRows_389;(归档表,sheetID){ //获取请求值 var reqSpreadSheet=SpreadsheetApp.openById(sheetID); var req

我正在编写一个脚本来存档(复制和删除)电子表格中的行

为此,我检查了工作表中的每一行,看它是否已完成

我可以通过收集所有行并在末尾写入值的范围来批处理第一个复制过程

然而,当需要删除行时,我仍然必须循环并为每行调用一次。我无法使用,因为行不是连续的

下面是我尝试使用脚本的一个示例:

function archiveRows_389;(归档表,sheetID){
//获取请求值
var reqSpreadSheet=SpreadsheetApp.openById(sheetID);
var reqSheet=reqSpreadSheet.getSheetByName(“Mstr_Wrkbk”);
var currentValues=reqSheet.getDataRange().getValues();
//用于暂存数据的容器
var rowsToArchive=[];
var rowsToDelete=[];
//检查可归档内容
var currentRows=currentValues.length;
对于(i=0;i=0;i--){
//从母版图纸中删除行
var rowNum=rowsToDelete[i];
reqSheet.deleteRow(rowNum);
}
//委托变更
SpreadsheetApp.flush();
返回numRows;
}
这部分运行非常缓慢:

//删除原始行(我们必须向后循环才能删除)
对于(i=rowsToDelete.length-1;i>=0;i--){
//从母版图纸中删除行
var rowNum=rowsToDelete[i];
reqSheet.deleteRow(rowNum);
}

有没有办法优化/批处理此操作?

如果只关心值,则可以删除整个工作表并将行粘贴到存档:

reqSheet.getDataRange().clear().setValues(rowsToArchive);

如果您关心格式,您可以像对待值一样对待它们的数组,几乎所有的格式选项都可以获取和设置,请将它们签入。

必须有一些标准来存档行。是否可以使用相同的条件进行排序,然后一次删除所有内容(也可以复制),然后取消排序?

必须有一些条件来存档行。你能用同样的标准进行排序,然后一次删除所有内容(也可以复制),然后取消排序吗?@SandyGood,很好的建议!只是更新了它来使用它。好的,我将添加它作为一个答案。