Supprimez les espaces indésirables avec la macro ONLYOFFICE

4 octobre 2023By Dasha

Dans le domaine de l’édition de texte, une macro efficace qui supprime les espaces inutiles est essentielle. Elle améliore la productivité et rationalise le flux de travail. Dans cet article, nous vous expliquerons comment créer une macro ONLYOFFICE conçue pour supprimer les espaces superflus d’un texte sélectionné.

Remove extra spaces with ONLYOFFICE macro

Construction de la macro

Nous commençons par accéder au document actif et capturer le contenu sélectionné :

const oDocument = Api.GetDocument();
const oRange = oDocument.GetRangeBySelect();
const rawText = oRange.GetText();

Nous supprimons ensuite le texte sélectionné. Plus tard, il sera remplacé par le texte formaté sans espace supplémentaire :

oRange.Delete();

Nous divisons rawText en un tableau de paragraphes basé sur les caractères de retour à la ligne. Chaque élément du tableau de paragraphes représente un paragraphe du texte original :

// Split the original word into an array of paragraphs based on newline characters
const paragraphs = rawText.split('\n');

Ensuite, la boucle parcourt chaque paragraphe du tableau paragraphs et le nettoie en remplaçant les espaces blancs consécutifs par un espace unique. Les paragraphes nettoyés sont stockés dans le tableau cleanedParagraphs :

const cleanedParagraphs = [];
// Clean each paragraph and store it in the cleanedParagraphs array
for (const paragraph of paragraphs) {
    // Use a regular expression to replace consecutive whitespaces with a single space
    const cleanedParagraph = paragraph.replace(/\s+/g, ' ');
    cleanedParagraphs.push(cleanedParagraph);
}

Après avoir nettoyé chaque paragraphe, nous utilisons la méthode join(‘\n’) pour combiner les paragraphes nettoyés en une seule chaîne, où chaque paragraphe nettoyé est séparé par un caractère de retour à la ligne (\n). Cette étape est cruciale car, lors de l’insertion de texte dans un document, nous devons fournir une chaîne unique avec les sauts de paragraphe appropriés :

// Join the cleaned paragraphs back together with newline characters
const cleanedText = cleanedParagraphs.join('\n');

Enfin, nous créons un nouveau paragraphe (oParagraph) et insérons cleanedText dans le document. Ce texte nettoyé contient tous les paragraphes nettoyés combinés en une seule chaîne, avec des caractères de retour à la ligne pour préserver la structure originale du paragraphe :

// Insert the cleanedText with original paragraph structure
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(cleanedText);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });

Le code macro complet est le suivant :

(function()
{
 const oDocument = Api.GetDocument();
const oRange = oDocument.GetRangeBySelect();
const rawText = oRange.GetText();
oRange.Delete();

// Split the original word into an array of paragraphs based on newline characters
const paragraphs = rawText.split('\n');

// Create an array to store cleaned paragraphs
const cleanedParagraphs = [];

// Clean each paragraph and store it in the cleanedParagraphs array
for (const paragraph of paragraphs) {
    // Use a regular expression to replace consecutive whitespaces with a single space
    const cleanedParagraph = paragraph.replace(/\s+/g, ' ');
    cleanedParagraphs.push(cleanedParagraph);
}

// Join the cleaned paragraphs back together with newline characters
const cleanedText = cleanedParagraphs.join('\n');

// Insert the cleanedText with original paragraph structure
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(cleanedText);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });   
})();

Exécutons notre macro et voyons comment elle fonctionne !

Nous espérons que cette macro sera un atout précieux dans votre boîte à outils et qu’elle vous permettra d’atteindre de nouveaux sommets en matière de productivité. Avec les macros ONLYOFFICE, vous libérez le potentiel d’une productivité accrue, en vous donnant accès à des solutions efficaces et automatisées.

Lorsque vous vous aventurerez dans la création de macros, ne négligez pas les possibilités offertes par l’API ONLYOFFICE. Si vous avez des questions ou des idées innovantes, n’hésitez pas à les partager, que ce soit dans les commentaires ou en nous contactant. Nous apprécions votre contribution et sommes enthousiastes à l’idée de collaborer avec vous ! Nous vous souhaitons bonne chance dans vos projets exploratoires !