Ocultar linhas específicas na seleção usando a macro do ONLYOFFICE

10 novembro 2022By Klaibson

Ao trabalhar com uma planilha, às vezes queremos ocultar linhas específicas para tornar a manipulação de grandes blocos de dados mais conveniente. Esta postagem de blog mostrará como facilitar esse recurso com uma macro do ONLYOFFICE pequena, mas peculiar.

Para materializar essa ideia, implementaremos o método SetHidden. Já foi utilizado em outra macro do ONLYOFFICE que permite reexibir todas as linhas e colunas da planilha.

Ocultar linhas específicas na seleção usando a macro ONLYOFFICE

O código da macro é o seguinte:

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

Para reexibir todas as linhas do documento, definimos a variável indexRowMax para a quantidade máxima de linhas. Em seguida, nós o utilizamos em um loop for que itera por toda a planilha e exibe cada linha alterando a propriedade do método SetHidden para false.

Construindo a macro “Ocultar linhas na seleção”

Como você já deve ter adivinhado, o método SetHidden pode funcionar nos dois sentidos. Ele permite não apenas reexibir as linhas, mas também escondê-las. No entanto, se quisermos ocultar algumas linhas específicas, a solução for-loop pode não ser a melhor opção. Em vez disso, sugerimos segmentar a seleção no documento e iterar com a função ForEach. Isso facilitará ocultar as linhas específicas na seleção, dependendo dos valores das células.

Então, primeiro, obtemos a planilha ativa e a seleção:

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

Em seguida, adicionamos a função ForEach e iteramos por cada célula na seleção para buscar os valores:

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

Agora adicionamos uma instrução if que obterá o índice da linha que contém um valor menor que 35. Armazenamos esse índice em uma variável e a usamos como parâmetro para definir a linha oculta:

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

Todo o código da macro é o seguinte:

(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);
    }
});
})();

Agora vamos executar nossa macro e ver como ela funciona!

Esperamos que essa pequena macro torne o gerenciamento dos dados da sua planilha mais conveniente. É apenas um dos muitos exemplos do que pode ser alcançado implementando nossos métodos de API. Nossas macros são baseadas em JavaScript, o que as torna extremamente versáteis e fáceis de adaptar às suas necessidades.

Nós encorajamos você a experimentar e fazer suas próprias macros. Sinta-se à vontade para fazer perguntas ou compartilhar suas ideias conosco. Estamos abertos à discussão e cooperação. Boa sorte em seus empreendimentos exploratórios!