Créez une macro ONLYOFFICE pour remplacer des mots dans vos présentations

15 novembre 2023By Dasha

Lors d’une présentation, il arrive souvent que nous devions modifier toutes les occurrences d’un mot particulier. Les corrections manuelles peuvent prendre beaucoup de temps, surtout si vous avez beaucoup de diapositives à traiter. Pour faciliter ce processus, nous allons créer une macro pour remplacer un mot spécifique dans l’éditeur de présentations.

An ONLYOFFICE Macro that replaces a word in the Presentation Editor

Construction de la macro

const oPresentation = Api.GetPresentation(); //get the current presentation

Tout d’abord, nous obtenons la présentation actuelle dans la variable oPresentation.

for (
    var slideIndex = 0;
    slideIndex < oPresentation.GetSlidesCount();
    slideIndex++
  ) {

Cette macro implique des boucles for imbriquées. Dans cette première boucle for, nous parcourons toutes les diapositives de la présentation.

var oSlide = oPresentation.GetSlideByIndex(slideIndex);
var aShape = oSlide.GetAllShapes(); //get all the shapes from different slides

Ces lignes récupèrent toutes les formes qui peuvent être présentes dans une diapositive particulière et placent leurs détails dans le tableau aShape.

for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
      var content = aShape[shapeIndex].GetDocContent();

Dans cette deuxième boucle for, nous obtenons le contenu de chaque forme sur une feuille de calcul particulière.

if (content) {
        var count = content.GetElementsCount();
        for (var elementIndex = 0; elementIndex < count; elementIndex++) {
          var element = content.GetElement(elementIndex);

Nous nous assurons que la variable content existe et nous obtenons le nombre de tous les éléments présents dans le content.

if (element) {
            const rawText = element.GetText(); //gets the text from a particular element
            element.Delete(); //delete the content
            const wordToFind = "apple"; // Replace "apple" with the word you want to find
            const replacementWord = "banana"; // Replace "banana" with the word you want to replace it with
            const cleanedText = rawText.replace(
              new RegExp(wordToFind, "g"),
              replacementWord
            );

Tout d’abord, nous nous assurons que la variable element est valide. Si l’élément existe, nous copions le texte original et supprimons le contenu à l’aide de la méthode element.delete().

Ensuite, nous spécifions le mot à remplacer et le mot de remplacement dans leurs variables respectives, et nous effectuons le remplacement, en stockant le nouveau texte dans la variable cleanedText.

 var oParagraph = Api.CreateParagraph();
 var oRun = Api.CreateRun();
 oRun.AddText(cleanedText);
 oParagraph.AddElement(oRun);
 content.Push(oParagraph);

Enfin, nous créons un nouveau paragraphe et y ajoutons cleanedText. Une fois l’élément paragraphe configuré, nous l’ajoutons à la diapositive, en remplacement de celui que nous avons supprimé ci-dessus, à l’aide du code ci-dessus.

Code complet de la macro

Voici le code complet de la macro :

(function () {
  const oPresentation = Api.GetPresentation(); //get the current presentation
  for (
    var slideIndex = 0;
    slideIndex < oPresentation.GetSlidesCount();
    slideIndex++
  ) {
    var oSlide = oPresentation.GetSlideByIndex(slideIndex);
    var aShape = oSlide.GetAllShapes(); //get all the shapes from different slides

    for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
      var content = aShape[shapeIndex].GetDocContent();

      // Check if content exists before proceeding
      if (content) {
        var count = content.GetElementsCount();
        for (var elementIndex = 0; elementIndex < count; elementIndex++) {
          var element = content.GetElement(elementIndex);

          // Check if element is valid before using it
          if (element) {
            const rawText = element.GetText(); //gets the text from a particular element

            element.Delete(); //delete the content

            const wordToFind = "apple"; // Replace "apple" with the word you want to find
            const replacementWord = "banana"; // Replace "banana" with the word you want to replace it with
            const cleanedText = rawText.replace(
              new RegExp(wordToFind, "g"),
              replacementWord
            );

            //creates a new paragragh, and restores the content which was deleted, with the cleaned text.
            var oParagraph = Api.CreateParagraph();
            var oRun = Api.CreateRun();
            oRun.AddText(cleanedText);
            oParagraph.AddElement(oRun);
            content.Push(oParagraph);
          }
        }
      }
    }
  }
})();

Exécutons notre macro et voyons les résultats !

Nous espérons que cette macro vous a été utile et qu’elle vous a permis de rationaliser votre processus de présentation.

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 !

Créez votre compte ONLYOFFICE gratuit

Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.