Como criar uma tabela a partir da lista numerada usando macros do ONLYOFFICE
Ao trabalhar com documentos, muitas vezes precisamos converter listas numeradas em tabelas para melhorar a legibilidade. Executar essa tarefa manualmente pode ser demorado. Felizmente, as macros do ONLYOFFICE permitem que os usuários automatizem tarefas repetitivas de forma eficiente. Nesta postagem do blog, forneceremos um guia passo a passo sobre como desenvolver uma macro do ONLYOFFICE que transforma perfeitamente listas numeradas em tabelas estruturadas.
Construindo a macro
Recuperando o documento e os parágrafos numerados
A macro começa acessando o documento ativo e recuperando todos os parágrafos que contêm numeração:
const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
- Api.GetDocument() recupera o documento aberto no momento.
- oDocument.GetAllNumberedParagraphs() reúne todos os parágrafos que usam estilos de numeração.
Organizando itens numerados em linhas
O script itera por cada parágrafo numerado e os classifica em linhas de tabela:
let tableData = [];
let currentRow = [];
for (let i = 0; i < paragraphs.length; i++) {
let level = paragraphs[i].GetNumbering().GetLevelIndex();
let text = paragraphs[i].GetText().trim();
if (level === 0) {
if (currentRow.length > 0) {
tableData.push(currentRow);
}
currentRow = [text];
} else if (level === 1 && currentRow.length > 0) {
currentRow.push(text);
}
}
if (currentRow.length > 0) {
tableData.push(currentRow);
}
- O script percorre todos os parágrafos e verifica seus níveis de numeração.
- Os itens de nível 0 iniciam uma nova linha, enquanto os itens de nível 1 são anexados como colunas na linha atual.
- Após o processamento, todas as linhas coletadas são armazenadas em tableData.
Determinando as dimensões da mesa
Antes de criar a tabela, a macro determina o número de colunas necessárias. O script calcula maxColumns encontrando a linha mais longa em tableData. Isso garante que a tabela tenha colunas suficientes para acomodar todos os itens corretamente:
let maxColumns = 0;
for (let j = 0; j < tableData.length; j++) {
if (tableData[j].length > maxColumns) {
maxColumns = tableData[j].length;
}
}
Criando e preenchendo a tabela
Agora que temos os dados organizados, a macro cria uma tabela e insere o conteúdo extraído:
let table = Api.CreateTable(maxColumns, tableData.length);
oDocument.Push(table);
for (let row = 0; row < tableData.length; row++) {
for (let col = 0; col < tableData[row].length; col++) {
table
.GetCell(row, col)
.GetContent()
.GetElement(0)
.AddText(tableData[row][col]);
}
}
- Api.CreateTable(maxColumns, tableData.length) cria uma tabela com as dimensões necessárias.
- O script percorre tableData e insere o texto correspondente em cada célula.
Tratamento de erros
Para garantir uma execução suave, um bloco try…catch é usado para capturar e registrar erros. Se ocorrer um erro, ele será registrado no console, ajudando os usuários a depurar problemas:
try {
// Code execution
} catch (error) {
console.log("Error: " + error.message);
}
Agora vamos executar nossa macro e ver como ela funciona!
Esperamos que esta macro se torne uma adição valiosa ao seu kit de ferramentas, ajudando você a simplificar tarefas repetitivas em seu fluxo de trabalho. As macros do ONLYOFFICE são projetadas para agilizar seu trabalho e aumentar a eficiência. Nós o encorajamos a explorar nossa extensa biblioteca de API e criar macros personalizadas adaptadas às suas necessidades. Se você tiver alguma ideia ou sugestão, sinta-se à vontade para nos contatar. Estamos sempre abertos a novas ideias e colaboração! Boa sorte em seus esforços exploratórios!
Crie sua conta gratuita no ONLYOFFICE
Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.