Cómo crear una tabla a partir de una lista numerada usando macros en ONLYOFFICE
Cuando trabajamos con documentos, a menudo necesitamos convertir listas numeradas en tablas para mejorar la legibilidad. Realizar esta tarea manualmente puede ser una pérdida de tiempo. Afortunadamente, las macros de ONLYOFFICE permiten a los usuarios automatizar tareas repetitivas de manera eficiente. En este artículo, proporcionaremos una guía paso a paso sobre cómo desarrollar una macro de ONLYOFFICE que transforme sin problemas las listas numeradas en tablas estructuradas.
Creando la macro
Recuperando el documento y los párrafos numerados
La macro comienza accediendo al documento activo y recuperando todos los párrafos que contienen numeración:
const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
- Api.GetDocument() recupera el documento actualmente abierto.
- oDocument.GetAllNumberedParagraphs() recopila todos los párrafos que utilizan estilos de numeración.
Organizando los elementos numerados en filas
El script recorre cada párrafo numerado y los organiza en filas de una tabla:
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);
}
- El script recorre todos los párrafos y verifica sus niveles de numeración.
- Los elementos de nivel 0 comienzan una nueva fila, mientras que los elementos de nivel 1 se agregan como columnas en la fila actual.
- Después de procesar, todas las filas recopiladas se almacenan en tableData.
Determinando las dimensiones de la tabla
Antes de crear la tabla, la macro determina el número de columnas necesarias. El script calcula maxColumns encontrando la fila más larga en tableData. Esto asegura que la tabla tenga suficientes columnas para acomodar todos los elementos correctamente:
let maxColumns = 0;
for (let j = 0; j < tableData.length; j++) {
if (tableData[j].length > maxColumns) {
maxColumns = tableData[j].length;
}
}
Creando y llenando la tabla
Ahora que tenemos los datos organizados, la macro crea una tabla e inserta el contenido 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) crea una tabla con las dimensiones necesarias.
- El script recorre tableData e inserta el texto correspondiente en cada celda.
Manejo de errores
Para asegurar una ejecución sin problemas, se utiliza un bloque try…catch para capturar y registrar errores. Si ocurre un error, se registrará en la consola, ayudando a los usuarios a depurar problemas:
try {
// Code execution
} catch (error) {
console.log("Error: " + error.message);
}
¡Ahora ejecutemos nuestra macro y veamos cómo funciona!
Esperemos que esta macro se convierta en una adición valiosa a tu conjunto de herramientas, ayudándote a simplificar tareas repetitivas en tu flujo de trabajo. Las macros de ONLYOFFICE están diseñadas para optimizar tu trabajo y aumentar la eficiencia. Te animamos a explorar nuestra extensa biblioteca de la API y crear macros personalizadas adaptadas a tus necesidades. Si tienes ideas o sugerencias, no dudes en ponerte en contacto. ¡Siempre estamos abiertos a nuevas ideas y colaboraciones! ¡Te deseamos mucha suerte en tus esfuerzos exploratorios!
Crea tu cuenta gratuita de ONLYOFFICE
Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.