Comment ajouter des commentaires à chaque occurrence d’un mot avec les macros ONLYOFFICE

5 janvier 2024By Dasha

Lorsque vous travaillez sur des documents, il arrive qu’il soit essentiel d’inclure un commentaire pour un mot spécifique qui apparaît à plusieurs reprises dans le texte. Dans cet article de blog, nous allons vous montrer comment ajouter efficacement des commentaires à chaque occurrence d’un mot spécifique, afin de rationaliser votre processus d’édition et d’améliorer la clarté du document.

Build an ONLYOFFICE macro that adds comments to every instance of a word in the Text Editor

Construction de la macro

function addCommentToWord() {

La fonction addCommentToWord() est conçue pour ajouter des commentaires à chaque occurrence d’un mot spécifié dans le document.

Voici un aperçu de ses principales composantes :

   const oDocument = Api.GetDocument();
   const numberOfElements = oDocument.GetElementsCount();

Ici, nous obtenons le document actuel dans la variable oDocument. Ensuite, nous obtenons tous les éléments du document à l’aide de la méthode GetElementsCount().

    for (
        let elementIndex = 0;
        elementIndex < numberOfElements;
        elementIndex++
      ) 

Une boucle for est utilisée ici pour parcourir tous les éléments. Cela permet d’ajouter un commentaire au mot souhaité dans chaque élément (paragraphe) du document.

{
   const oElement = oDocument.GetElement(elementIndex);
   const rawText = oElement.GetText();

Dans la boucle for, nous obtenons chaque élément du document en utilisant la méthode GetElement et en transmettant l’index de l’élément. Ensuite, nous extrayons le texte brut dans la variable rawText.

    const targetWord = "sample word";
    let count = 0;
    for (let i = 0; i < targetWord.length; i++) {
      count++;
    }
    const wordLength = count - 1;

Nous définissons le mot où nous voulons que nos commentaires apparaissent. Ensuite, nous calculons la longueur du mot à l’aide d’une boucle for et la stockons dans wordLength.

// Find all occurrences of the target word in the document
    const wordRegex = new RegExp("\\b" + targetWord + "\\b", "gi");

Ensuite, une expression régulière (wordRegex) est créée en utilisant le mot cible pour trouver toutes les occurrences dans le document.

let match;
    while ((match = wordRegex.exec(rawText)) !== null) {
      let matchPosition = match.index; //returns the index where the word starts.
      let nextMatchPosition = matchPosition + wordLength;
      // Add a comment at the position of the match
      const comment = "YOUR COMMENT GOES HERE";
      const oParagraph = oDocument.GetElement(0);
      const range = oParagraph.GetRange(matchPosition, nextMatchPosition);
      range.AddComment(comment, "Comment's Author Name");
    } 
  }

Ici, à l’intérieur d’une boucle while, nous parcourons toutes les instances trouvées et stockées dans wordRegex.

Pour chaque correspondance, la position de départ du mot (matchPosition) et la position du caractère suivant le mot (nextMatchPosition) sont calculées.

La variable comment contient le commentaire que vous souhaitez insérer. La méthode AddComment comporte un paramètre optionnel qui peut être utilisé pour modifier le nom de l’auteur. Si vous ne souhaitez pas l’utiliser, vous pouvez exclure le paramètre optionnel et vous contenter de transmettre la variable commentaire.

addCommentToWord();

Enfin, la fonction addCommentToWord est appelée.

Code complet de la macro

Voici le code complet de la macro.

(function () {
  function addCommentToWord() {
    const oDocument = Api.GetDocument();
    const numberOfElements = oDocument.GetElementsCount();

    //looping through all the elements in the document.
    for (
        let elementIndex = 0;
        elementIndex < numberOfElements;
        elementIndex++
      ) {
        const oElement = oDocument.GetElement(elementIndex);
        const rawText = oElement.GetText();
  
      // Specify the target word and the length of the word
      const targetWord = "sample word";
      let count = 0;
      for (let i = 0; i < targetWord.length; i++) {
        count++;
      }
      const wordLength = count - 1;

      // Find all occurrences of the target word in the document
      const wordRegex = new RegExp("\\b" + targetWord + "\\b", "gi");
      let match;
      while ((match = wordRegex.exec(rawText)) !== null) {
        
        let matchPosition = match.index; // returns the index where the word starts.
        let nextMatchPosition = matchPosition + wordLength; //the index where the word ends.

        // Add a comment at the position of the match
        const comment = "YOUR COMMENT GOES HERE";
        const range = oElement.GetRange(matchPosition, nextMatchPosition);
        range.AddComment(comment, "Comment's Author Name");
      }
    }
  }

  addCommentToWord();
})();

Voyons maintenant comment fonctionne notre macro.

 

Nous sommes convaincus que cette macro facilite la gestion des commentaires de mots répétitifs et constitue un outil pratique pour les utilisateurs de l’éditeur de documents d’ONLYOFFICE.

Ne manquez pas l’occasion d’exploiter la puissance de l’API ONLYOFFICE. Notre vaste bibliothèque de méthodes API est votre clé pour transformer vos idées en réalité. Si vous avez des questions ou des concepts innovants, nous vous encourageons à les partager avec nous. Votre contribution est très appréciée et nous sommes ravis de pouvoir collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !