Cómo ocultar filas específicas en una selección utilizando la macro de ONLYOFFICE

10 noviembre 2022By Sergey

Cuando trabajamos con una hoja de cálculo, a veces queremos ocultar filas específicas para que la manipulación de grandes volúmenes de datos sea más conveniente. Esta entrada del blog te mostrará cómo hacer que esta característica sea más fácil con una pequeña pero peculiar macro de ONLYOFFICE.

Para materializar esta idea, implementaremos el método SetHidden. Ya se utiliza en otra macro de ONLYOFFICE que permite desocultar todas las filas y columnas de la hoja de cálculo.

Cómo ocultar filas específicas en una selección utilizando la macro de ONLYOFFICE

El código de la macro es el siguiente:

var activeSheet = Api.ActiveSheet;
var indexRowMax = 1048576;
var n = 1;
    for (let i = 0; i < indexRowMax; i++) {
        activeSheet.GetRows(n).SetHidden(false);
        n++;
    }

Para desocultar todas las filas del documento, establecemos la variable indexRowMax a la cantidad máxima de filas. Y luego, la utilizamos en un bucle For que procesa una iteración en toda la hoja de cálculo y desoculta cada fila cambiando la propiedad del método SetHidden a “false”.

Cómo construir la macro “Ocultar filas en la selección”

Como ya habrás adivinado, el método SetHidden puede funcionar en ambos sentidos. Permite no sólo desocultar las filas sino también ocultarlas. Sin embargo, si queremos ocultar algunas filas en particular, la solución del bucle For podría no ser la mejor opción. En su lugar, sugerimos señalar la selección en el documento y procesar una iteración en ella utilizando la función ForEach. Esto facilitará la ocultación de las filas específicas en la selección dependiendo de los valores de las celdas.

Así que, primero, obtenemos la hoja activa y la selección:

var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;

A continuación, añadimos la función ForEach y procesamos una iteración en cada celda de la selección para obtener los valores:

selection.ForEach(function (range) { 
    var value = range.GetValue(); 

Ahora añadimos una instrucción if que obtendrá el índice de la fila que contiene un valor menor que 35. Almacenamos este índice en una variable y lo utilizamos como parámetro para establecer la fila oculta:

selection.ForEach(function (range) { 
    var value = range.GetValue();  
      if (value < "35") {   
    var row  = range.GetRow();
      range.GetRows(row[range]).SetHidden(true);
    }

El código completo de la macro es el siguiente:

(function()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) { 
    var value = range.GetValue();  
      if (value < "35") {   
    var row  = range.GetRow();
      range.GetRows(row[range]).SetHidden(true);
    }
});
})();

Ahora vamos a ejecutar nuestra macro y ver cómo funciona:

Esperamos que esta pequeña macro haga más cómoda la gestión de tus datos en la hoja de cálculo. Es sólo uno de los muchos ejemplos de lo que se puede conseguir implementando nuestros métodos de la API. Nuestras macros están basadas en JavaScript, lo que las hace extremadamente versátiles y fáciles de adaptar a tus necesidades.

Te invitamos a que experimentes y crees tus propias macros. No dudes en hacer preguntas o compartir tus ideas con nosotros. Estamos abiertos al debate y a la cooperación. ¡Te deseamos mucha suerte!