Necesito mover las filas a otra pestaña en la casilla de verificación = VERDADERO, pero el siguiente código bloquea mi hoja porque es terriblemente lento. ¿Cómo puedo hacerlo más rápido? Me estoy estrangulando un poco aquí.
¿Cómo puedo verificar las casillas = verdadero en todo el documento sin usar un bucle for y sin colapsar la hoja?
| Controlar | IDENTIFICACIÓN | Producto |
|---|---|---|
| ☑ | 1 | 3456 |
| ☑ | 2 | PRIMERA |
| [] | 3 | AZECRT |
function onEdit(event) { // assumes source data in sheet named main // target sheet of move to named Completed // getColumn with check-boxes is currently set to column 4 or D var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "main" && r.getColumn() == 4 && r.getValue() == true) { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("Completed"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); s.deleteRow(row); } else if(s.getName() == "Completed" && r.getColumn() == 4 && r.getValue() == false) { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("discart"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); s.deleteRow(row); } }function onEdit(e) { //e.source.toast('entry'); //Logger.log(JSON.stringify(e)); const sh = e.range.getSheet(); if(sh.getName() == "main" && e.range.columnStart == 4 && e.value == "TRUE") { let tsh = e.source.getSheetByName("Completed"); sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).moveTo(tsh.getRange(tsh.getLastRow() + 1, 1)); sh.deleteRow(e.range.rowStart); } else if(sh.getName() == "Completed" && e.range.columnStart == 4 && e.value == "FALSE") { let tsh = e.source.getSheetByName("discart"); let trg = tsh.getRange(tsh.getLastRow() + 1, 1); sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).moveTo(trg); sh.deleteRow(e.range.rowStart); } }