Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
Hoja de cálculo de Google: ¿ocultar/mostrar cualquier fila que cumpla con la condición x en un grupo de filas al hacer clic en el botón?

Al hacer clic en "botón 1", me gustaría que el código verifique la primera celda (columna A) de las filas 38-58 y oculte la fila si la celda correspondiente está vacía y muestre si no lo está.

Vacío en este caso significa que la celda todavía tiene una fórmula pero está en blanco. Si eso no es posible, la "Condición Oculta" puede ser Celdas que no son un número.

Me gustaría combinarlo con el siguiente código, que oculta y muestra las filas 10 y 11 cuando las celdas C4 y D4 equivalen a 0 respectivamente.

 function button2(){ var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); var cellRef1 = "C4"; var cellRef2 = "D4"; var cell1 = sheet.getRange(cellRef1); var cell2 = sheet.getRange(cellRef2); var value1 = cell1.getValue(); var value2 = cell2.getValue(); if (value1 == "0"){ sheet.hideRows(10); } if (value2 == "0"){ sheet.hideRows(11); } if (value1 != "0"){ sheet.showRows(10); } if (value2 != "0"){ sheet.showRows(11); }; };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede ocultar/mostrar las filas de esta manera:

 function hide_unhide_rows() { var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getRange('a38:a58').getDisplayValues().flat(); rows.forEach((cell_value,i) => { let index = i+38; if (cell_value == '' && !sheet.isRowHiddenByUser(index)) sheet.hideRows(index); if (cell_value != '' && sheet.isRowHiddenByUser(index)) sheet.unhideRows(index); }); }

En cuanto a cómo se puede combinar con su código, simplemente puede agregar al final de su función esta línea:

 hide_unhide_rows();

O, aquí está el código combinado completo:

 function button2() { var sheet = SpreadsheetApp.getActiveSheet(); var value1 = sheet.getRange('c4').getValue(); var value2 = sheet.getRange('d4').getValue(); if (value1 == 0) { sheet.hideRows(10) } else { sheet.showRows(10) } if (value2 == 0) { sheet.hideRows(11) } else { sheet.showRows(11) } var rows = sheet.getRange('a38:a58').getDisplayValues().flat(); rows.forEach((cell_value, i) => { let index = i+38; if (cell_value == '' && !sheet.isRowHiddenByUser(index)) sheet.hideRows(index); if (cell_value != '' && sheet.isRowHiddenByUser(index)) sheet.unhideRows(index); }); }

Actualizar

Si tiene varios rangos para procesar, debe cambiar varias líneas en el código de esta manera:

 function button(){ var sheet = SpreadsheetApp.getActiveSheet(); var value1 = sheet.getRange('c4').getValue(); var value2 = sheet.getRange('d4').getValue(); if (value1 == 0) { sheet.hideRows(10) } else { sheet.showRows(10) } if (value2 == 0) { sheet.hideRows(11) } else { sheet.showRows(11) } var list = ['a27:a29','a41:a60','a66:a85']; // <----------------- here var rangeList = sheet.getRangeList(list).getRanges(); // <------- here for (var range in rangeList){ var rows = rangeList[range].getDisplayValues().flat(); var shift = +list[range].split(':')[0].slice(1); // <---------- here rows.forEach((cell_value, i) => { let index = (i + shift); // <-------------------------------- here if (cell_value == '' && !sheet.isRowHiddenByUser(index)) sheet.hideRows(index); if (cell_value != '' && sheet.isRowHiddenByUser(index)) sheet.showRows(index); }); } }

Si tiene demasiados rangos, el código puede funcionar lentamente. Hay una manera de mejorarlo un poco. Pero la operación de ocultar/mostrar es lenta por diseño. Entonces, el código será bastante lento de todos modos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda