Este articulo responde a la necesidad de ocultar o eliminar filas cuando se haga un proceso de revisión en Google Sheets y se cumplen 2 condiciones en 2 diferentes columnas de la hoja de calculo
Para ello vamos a hacer uso del condiciona IF
la estructura básica nos es dada de la siguiente forma:
if (condición) {
// bloque de código que se ejecutara si la condición se cumple
}
evaluaremos 2 condiciones y no solo una
cada condición esta en una columna diferente, por lo que...
debemos obtener el dato correcto dentro del arreglo de datos para compararlo con nuestras 2 condiciones
primer condición que el dato de la columna E, sea igual a "Vainilla" o "Fresa"
y que además de cumplir con lo anterior , en la columna F, el dato sea igual a "Enviado"
es decir para que la fila se oculte o elimine según sea tu elección, la fila revisada debe tener los datos:
Vainilla y Enviado o en su defecto Fresa y Enviado
el resultado en código podría quedar así:
if(datos[i][3] == "Vainilla" && datos[i][4] == "Enviado"|| datos[i][3] == "Fresa" && datos[i][4] == "Enviado"){
ss.hideRows(i+2);
//ss.deleteRow(i+2);//para el caso de eliminar filas
}
El resto lo vamos a envolver en un bulce for para que vaya revisando cada fila de datos y verifique si se cumple la condición, como se muestra en esta imagen (al final puedes copiar y pegar el código de ejemplo)
pasos básicos
se crean las variables ss (que hacer referencia ala hoja a revisar) , uf (obtenemos la ultima fila) y datos (obtenemos todos los datos a revisar en una matriz)
dado que los datos están claramente definidos en la fila 2, columna 2 es decir en B2 inician y terminan en la columna F que es la 6, nos faltaría definir solo la cantidad de filas que se vayan actualizando conforme la base de datos aumente y esto lo obtenemos con la variable uf
tenemos que recorrer el arreglo de datos (variable datos) con un bucle for; donde la variable i vale 0 y datos.length representa la cantidad de información a revisar;
datos[i][3] representa la columna E que contiene el sabor del helado y datos[i][4] si en la columna F o "status" esta el dato "Enviado", de tal manera que lo que se pretende es ocultar/eliminar todos los pedidos enviados, para quedarnos solamente con los que están en proceso de entrega 😃
el condicional if múltiple se explica en al aparatado "Consideraciones"
la línea de código ss.hideRows(i+2); significa que ocultara "hideRows" el numero de la fila que se haga mención en el paréntesis, por lo tanto si 1 = 0 , entenderemos que (i+2) es igual a (0+2) = 2 , es decir ocultara la fila 2 si cumple con las condiciones de if múltiple, en síntesis i+2 es para que el recorrido inicie revisando la fila 2 y en caso de cumplirla la oculte.
de ahí que comparemos si la fila en revisión en cada "vuelta" del bucle, contiene los datos que requerimos para ocultar/eliminar la fila y de forma secuencial en cada "vuelta" del "bucle" o "ciclo" vaya realizando la verificación y ocultando/eliminando según proceda o no.
En este ejemplo solo las 2 ultima filas cumplen las condiciones requeridas.
Fuera de eso el código contiene 2 líneas que no son indispensables del todo
un flush para la hoja, para reflejar los cambios de forma visual ( SpreadsheetApp.flush(); )
una alerta que nos indica que las filas se han eliminado/ocultado: SpreadsheetApp.getUi().alert("filas ocultadas");
si el tema fue de utilidad comparte este articulo con otras personas, nos ayudarías mucho haciendo difusión de estas propuestas 😉
Síguenos y suscríbete en:
function eliminaFilas(){
var ss = SpreadsheetApp.getActive().getSheetByName("Sheet1");
var uf = ss.getLastRow();
var datos = ss.getRange(2, 2, uf, 6).getDisplayValues();
for(var i =0;i<datos.length;i++){
if(datos[i][3] == "Vainilla" && datos[i][4] == "Enviado"|| datos[i][3] == "Fresa" && datos[i][4] == "Enviado"){
ss.hideRows(i+2);
//ss.deleteRow(i+2);//para el caso de eliminar filas
}
SpreadsheetApp.flush();
}
SpreadsheetApp.getUi().alert("filas ocultadas");
}