Me las arreglé para automatizar muchos de mis documentos de hojas de empresas, pero estoy atascado en una cosa.
Estoy tratando de automatizar una secuencia de comandos que escanea este rango dado F11: F20 y si el valor == "" entonces borro la siguiente fila a la izquierda. Esto a continuación solo funciona si todos los campos están vacíos (y toma un tiempo, encontré esto en línea, por lo que las condiciones del bucle probablemente estén bastante desordenadas), he intentado hacer un bucle for, bucles while, lo he intentado probablemente 15 cosas fuera de la codificación dura con declaraciones if y if else (quiero hacerlo correctamente), pero simplemente no sé cómo navegar hacia abajo en ciertas celdas para escanear y eliminar en general.
var ss = SpreadsheetApp.getActiveSpreadsheet(); var numCol = SpreadsheetApp.getActiveSheet().getLastColumn(); var range, substring1; //loop for (var i = 1; i <= numCol; i++) { //Here is the magic range = ss.getRange("F11:F20"); substring1 = range.getValue(); if ( substring1 === '') { range.offset(0, -1).clearContent(); } } }getRange y getValue se usan en un ciclo, el costo del proceso será alto. ÁrbitroCuando este flujo se refleja en un script, se convierte en lo siguiente.
function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var values = sheet.getRange("F11:F20").getValues(); var ranges = values.reduce((ar, [f], i) => { if (f == "") ar.push("E" + (i + 11)); return ar; }, []); sheet.getRangeList(ranges).clearContent(); }var sheet = SpreadsheetApp.getActiveSheet(); to var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("###sheetname###"); .No veo ninguna iteración aquí... ¿dónde estás iterando en i? Parece que está mirando las mismas celdas exactas cada vez que pasa por el ciclo.
Esto solo devolvería el valor de la primera celda en su rango, que si lo está haciendo bien sería el valor en F11.
Creo que quieres algo como esto (no estoy seguro si el rango está basado en cero o en 1, aunque)
for (var i = 1; i <= numCol; i++) { range = ss.getRange(10 + i,6); substring1 = range.getValue(); if ( substring1 === '') { range.offset(1, -1).clearContent(); } }si el rango está basado en cero, entonces el rango obtenido debería ser (9 + i, 5)