Erstellen Sie ein ONLYOFFICE-Makro, um Wörter in Ihren Präsentationen zu ersetzen

15 November 2023By Vlad

Bei der Erstellung einer Präsentation kommt es immer wieder vor, dass wir alle Vorkommen eines bestimmten Wortes ändern müssen. Manuelle Korrekturen können sehr zeitaufwändig sein, vor allem, wenn man mit vielen Folien arbeiten muss. Um diesen Prozess zu erleichtern, werden wir ein Makro erstellen, das ein bestimmtes Wort im Präsentationseditor ersetzt.

An ONLYOFFICE Macro that replaces a word in the Presentation Editor

Erstellung eines Makros

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

Zunächst wird die aktuelle Präsentation in der Variablen oPresentation angezeigt.

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

Dieses Makro besteht aus verschachtelten for-Schleifen. In dieser ersten for-Schleife werden alle Folien der Präsentation durchlaufen.

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

Diese Zeilen erfassen alle Formen, die in einer bestimmten Folie vorhanden sein können, und schieben ihre Details in das Array aShape.

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

In dieser zweiten for-Schleife erhalten wir den Inhalt für jede Form auf einem bestimmten Tabellenblatt.

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

Wir vergewissern uns, dass die Variable content existiert, und ermitteln die Anzahl aller in content vorhandenen Elemente.

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
            );

Zunächst stellen wir sicher, dass das variable element gültig ist. Wenn das Element existiert, kopieren wir den ursprünglichen Text und löschen den Inhalt mit der Methode element.delete().

Anschließend geben wir das zu ersetzende Wort und das Ersatzwort in den entsprechenden Variablen an, führen die Ersetzung durch und speichern den neuen Text in der Variablen cleanedText.

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

Schließlich erstellen wir einen neuen Absatz und fügen den cleanedText hinzu. Nachdem das Absatzelement eingerichtet ist, fügen wir es der Folie wieder hinzu und ersetzen das zuvor gelöschte Element mit dem oben beschriebenen Code.

Vollständiger Code des Makros

Hier ist der gesamte Code des Makros:

(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);
          }
        }
      }
    }
  }
})();

Führen wir unser Makro aus und sehen wir uns die Ergebnisse an!

Wir hoffen, dass dieses Makro für Sie hilfreich war und Ihren Präsentations-Workflow gestrafft hat.

Verpassen Sie nicht die Chance, die Leistung der ONLYOFFICE API zu nutzen. Unsere umfangreiche Bibliothek von API-Methoden ist Ihr Schlüssel zur Umsetzung Ihrer Ideen. Wenn Sie Fragen oder innovative Konzepte haben, können Sie uns diese gerne mitteilen. Ihre Anregungen sind uns sehr wichtig, und wir freuen uns über die Möglichkeit der Zusammenarbeit mit Ihnen. Viel Erfolg!