Comment créer un tableau à partir d’une liste numérotée en utilisant les macros ONLYOFFICE
Lorsque nous travaillons sur des documents, nous devons souvent convertir des listes numérotées en tableaux pour améliorer la lisibilité. L’exécution manuelle de cette tâche peut prendre beaucoup de temps. Heureusement, les macros ONLYOFFICE permettent aux utilisateurs d’automatiser efficacement les tâches répétitives. Dans cet article de blog, nous allons fournir un guide étape par étape pour développer une macro ONLYOFFICE qui transforme de manière transparente les listes numérotées en tableaux structurés.
Construction de la macro
Récupération du document et des paragraphes numérotés
La macro commence par accéder au document actif et récupère tous les paragraphes qui contiennent une numérotation :
const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
- Api.GetDocument() récupère le document actuellement ouvert.
- oDocument.GetAllNumberedParagraphs() rassemble tous les paragraphes qui utilisent des styles de numérotation.
Organisation des éléments numérotés en lignes
Le script parcourt chaque paragraphe numéroté et les trie dans les lignes du tableau :
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);
}
- Le script parcourt en boucle tous les paragraphes et vérifie leur niveau de numérotation.
- Les éléments de niveau 0 commencent une nouvelle ligne, tandis que les éléments de niveau 1 sont ajoutés en tant que colonnes dans la ligne actuelle.
- Après traitement, toutes les lignes rassemblées sont stockées dans tableData.
Détermination des dimensions du tableau
Avant de créer le tableau, la macro détermine le nombre de colonnes nécessaires. Le script calcule maxColumns en trouvant la ligne la plus longue dans tableData. Cela permet de s’assurer que le tableau comporte suffisamment de colonnes pour accueillir correctement tous les éléments :
let maxColumns = 0;
for (let j = 0; j < tableData.length; j++) {
if (tableData[j].length > maxColumns) {
maxColumns = tableData[j].length;
}
}
Création et remplissage du tableau
Maintenant que les données sont organisées, la macro crée une table et y insère le contenu extrait :
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) crée un tableau aux dimensions requises.
- Le script parcourt en boucle tableData et insère le texte correspondant dans chaque cellule.
Traitement des erreurs
Pour garantir une exécution sans heurts, un bloc try…catch est utilisé pour détecter et enregistrer les erreurs. Si une erreur se produit, elle est enregistrée dans la console, ce qui aide les utilisateurs à résoudre les problèmes :
try {
// Code execution
} catch (error) {
console.log("Error: " + error.message);
}
Exécutons maintenant notre macro et voyons comment elle fonctionne !
Nous espérons que cette macro sera un ajout précieux à votre boîte à outils, vous aidant à simplifier les tâches répétitives dans votre flux de travail. Les macros ONLYOFFICE sont conçues pour rationaliser votre travail et augmenter votre efficacité. Nous vous encourageons à explorer notre vaste bibliothèque d’API et à créer des macros personnalisées adaptées à vos besoins. Si vous avez des idées ou des suggestions, n’hésitez pas à nous contacter. Nous sommes toujours ouverts aux nouvelles idées et à la collaboration ! Nous vous souhaitons bonne chance dans vos projets d’exploration !
Créez votre compte ONLYOFFICE gratuit
Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.