Crea una macro di ONLYOFFICE per sostituire le parole nelle tue presentazioni

15 novembre 2023By Elena

Esistono diversi casi durante la presentazione in cui è necessario modificare tutte le occorrenze di una determinata parola. Le correzioni manuali possono richiedere molto tempo, soprattutto se hai molte diapositive su cui lavorare. Per facilitare questo processo, creeremo una macro per sostituire una parola specifica nell’editor delle presentazioni.

An ONLYOFFICE Macro that replaces a word in the Presentation Editor

Creazione della macro

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

Innanzitutto, otteniamo la presentazione corrente nella variabile oPresentation.

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

Questa macro implica cicli for nidificati. In questo primo ciclo for, iteriamo su tutte le diapositive della presentazione.

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

Queste linee ottengono tutte le forme che possono essere presenti in una particolare diapositiva e inseriscono i loro dettagli nell’array aShape.

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

In questo secondo ciclo for otteniamo il contenuto di ciascuna forma su un particolare foglio di calcolo.

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

Ci assicuriamo che la variabile content esista e otteniamo il conteggio di tutti gli elementi presenti nella variabile 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
            );

Per prima cosa ci assicuriamo che la variabile elemento sia valida. Se l’elemento esiste, copiamo il testo originale ed eliminiamo il contenuto utilizzando il metodo element.delete() .

Successivamente specifichiamo la parola da sostituire e la parola da sostituire nelle rispettive variabili ed eseguiamo la sostituzione, memorizzando il nuovo testo nella variabile cleanedText.

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

Infine, creiamo un nuovo paragrafo e vi aggiungiamo il cleanedText . Dopo aver impostato l’elemento paragrafo, lo aggiungiamo nuovamente alla diapositiva, sostituendo quello che avevamo eliminato in precedenza, utilizzando il codice precedente.

Codice completo della macro

Ecco l’intero codice della 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);
          }
        }
      }
    }
  }
})();

Eseguiamo la nostra macro e vediamo i risultati!

Ci auguriamo che questa macro ti sia stata di aiuto e abbia semplificato il flusso di lavoro sulle presentazioni.

Non perdere l’occasione di sfruttare la potenza dell’API ONLYOFFICE. La nostra vasta libreria di metodi API è la chiave per trasformare le tue idee in realtà. Se hai domande o concetti innovativi, ti invitiamo a condividerli con noi. Il tuo contributo è molto apprezzato e siamo entusiasti della possibilità di collaborare con te. Buona fortuna per i tuoi sforzi esplorativi!