Office Script - Array para manipular múltiplas células

Imagem como o texto em destaque sobre o Office Script

Olá, seguidor e seguidora do blog!

Em mais um artigo sobre o Office Script, vamos aprender como selecionar múltiplas células de uma planilha no Excel Online utilizando uma variável do tipo Array.

Se você não viu ainda o artigo anterior, deixo aqui o link para você acessá-lo e saber um pouco mais o que é um array!

No ambiente web, métodos tradicionais de análise do conteúdo das células podem ser muito lentos ou simplesmente impossíveis de serem executados, por isso devemos aprender a trabalhar com o que o ambiente nos oferece.

No Office Script, é possível utilizar um array Multidimensional para manipular faixas de células, desde a sua associação com o array, quando à colocação desses dados de volta na planilha. Rotinas inteiras podem ser escritas para fazer análise em arrays (e uma rotina dessas será tema do próximo artigo).

Vamos ao exemplo que está no vídeo 21 (link) da playlist de Office Script no Youtube (link).

Nossa estrutura dos dados

Cópia da Tela do Excel Online mostrando dados na coluna A e B que serão manipulados

Na Planilha2 há 6.529 linhas com nomes e sobrenomes e o objetivo é exportar todos esses dados para a Planilha1. O botão que você vê ao lado dos dados foi inserido a partir do código pronto... 

O código completo e em negrito a parte principal do código:

    let w1 = workbook.getWorksheet('Planilha1');
    let w2 = workbook.getWorksheet('Planilha2');
    let i:number;
    let ln:number = 0;
    let col:number = 0;
    let ultCel = w2.getCell(w2.getRange().getRowCount() - 10).getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex() + 1;

    w1.getRange("A:B").getEntireColumn().delete
    w1.getCell(ln, col).select()

    let rows: (string | boolean | number)[][] = []
    rows = w2.getRange("A1:B" + ultCel).getValues()
    const range = w1.getCell(ln,col).getResizedRange(rows.length-1,rows[0].length-1)
    range.setValues(rows)

No trecho let rows: (string | boolean | number)[][] = [] estamos criando uma variável multidimensional do tipo array. Esta é a sintaxe para fazer a declaração...
O que mais chama a atenção neste caso é o conteúdo entre os parênteses. Literalmente estamos orientando o Office Script que nosso array pode receber valores dos tipos string (texto), boolean (lógico) e number (números). Assim, nosso type annotation não tem apenas um tipo único de dados, mas sim uma variedade. 

Se você quiser que ele armazene apenas textos e números, poderia mudar o interior da declaração nos parênteses para (string | number) que funcionaria!

O trecho rows = w2.getRange("A1:B" + ultCel).getValues() atribui a variável rows o conteúdo das células A1 até B6529. Não importa se são poucas linhas e colunas ou muitas que a atribuição será feita de uma única vez. A variável ultCel foi declarada no início do código e representa a última linha com dados da Planilha2.

const range = w1.getCell(ln,col).getResizedRange(rows.length-1,rows[0].length-1)

Este trecho cria uma variável do tipo const (constante) e dimensiona a faixa de células da Planilha1 (w1) que receberá os dados. A região de destino deve ser exatamente igual (em tamanho). Se não forem, você receberá um erro em tempo de execução.

range.setValues(rows)

Por fim, este trecho faz a gravação (setValues) dos valores (rows) na faixa definida na constante range.

Não é complicado entender o processo e, em meu curso do Office Scripts em meu portal, há muito material complementar de como você pode trabalhar com arrays. Há dezenas de métodos diferentes que fazem com que seu código, rode muito mais eficientemente.

Utilize o cupom: ARTIGOTROVATO e ganhe um desconto de 30% no valor do curso. Esse cupom deve ser utilizado na hora do pagamento e é exclusivo para você que leu o artigo e acompanha meus trabalhos por aqui. 

Você não vai ver a divulgação deste cupom em lugar nenhum mais.

Clique aqui para adquirir o curso com 30% de desconto.


Agora é sua vez... Pratique um pouco e escreva o código deste artigo (Não vale copiar e colar!). 

Que assunto gostaria que eu escrevesse no próximo artigo?
Deixe sua sugestão nos comentários!

✔ Para acesso ao conteúdo programático do curso clique aqui.

Imagem com uma representação do Office Script

Convido você a ler outros artigos que já escrevi sobre o Office Script:


Até o próximo artigo!



Alessandro Trovato
Compartilhando conhecimento, sempre!


#typescript #officescript #excelonline #excelscript #trovato #mvp #mvpbr #cursostrovato #if #elseif #excelonlinescript

Mais vendidos Amazon

Postagem Anterior Próxima Postagem