Я сделал аналогичный лист для рабочего проекта, и решение, которое я нашел, состояло в том, чтобы сохранить значения строк, когда я скопировал их в новый массив, а затем удалил строки снизу вверх, используя a для l oop. Для вашего примера попробуйте это:
function moveValuesOnly(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Time Off Action Items");
var range = ss.getRange("A3:K");
var values = range.getValues();
var target = new Array();
// Create new array to log copied rows
var copiedRows = new Array();
for(i = 0; i<values.length; i++){
if (values[i][9] == "Confirm"){
target.push(values[i]);
// Add row value into copied rows array
copiedRows.push(i);
}
}
var sDest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
sDest.getRange(sDest.getLastRow()+1,1,target.length,target[0].length).setValues(target);
// Go back through and delete rows from the bottom up
var totalCopied = copiedRows.length;
for (s = totalCopied; s>0; s--) {
ss.deleteRow(copiedRows[s-1]+3);
}
}