Usa la macro ONLYOFFICE per sostituire le forme con i grafici

5 dicembre 2022By Elena

Le presentazioni sono diventate una parte essenziale della nostra vita. Che si tratti di un incontro di lavoro o di un progetto scolastico, abbiamo bisogno di loro per presentare la nostra visione al pubblico. Regolare la presentazione di 100 diapositive potrebbe essere un lavoro un po’ noioso. Questo post nel blog ti mostrerà come affrontare questo compito con la macro ONLYOFFICE.

Use ONLYOFFICE macro to replace shapes with charts La nostra piccola macro sostituirà le forme con i grafici su ogni diapositiva. Prima di procedere, approfondiamo il posizionamento degli elementi. A differenza dei fogli di calcolo in cui le righe e le colonne possono essere raggiunte dall’indice, possiamo scegliere come target un elemento di presentazione solo dalla sua posizione sulla diapositiva. Gli elementi sono posizionati uno sopra l’altro. Ciò implica che possiamo individuarli inserendo tutti gli elementi in un array e iterando scorrendolo.

Creazione di una macro

Quindi, per prima cosa, puntiamo alla presentazione attiva con il metodo Api.GetPresentation:

var oPresentation = Api.GetPresentation();

Quindi aggiungiamo un ciclo for-loop che itera ogni diapositiva nella presentazione. Quindi ecco il numero totale di diapositive. E recuperiamo ogni diapositiva passandola come indice:

var oPresentation = Api.GetPresentation();
var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
    var oSlide = oPresentation.GetSlideByIndex(i);
}

Successivamente, eseguiamo il metodo GetAllShapes. Raccoglie tutte le forme sulla diapositiva e le restituisce in un array:

var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
    var oSlide = oPresentation.GetSlideByIndex(i);
    var aShape  = oSlide.GetAllShapes();
}

Ora dobbiamo rimuovere le forme dalle diapositive. Forme e disegni ereditano le stesse proprietà e questo ci consente di utilizzare il metodo di eliminazione Delete. Rimuove una forma o un disegno dalla diapositiva. Nel nostro caso, le forme sono posizionate in basso. Quindi passiamo 0 come indice per rimuovere tutti gli elementi inferiori:

var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
    var oSlide = oPresentation.GetSlideByIndex(i);
    var aShape  = oSlide.GetAllShapes();
      aShape[0].Delete();
}

Quindi aggiungiamo un grafico implementando il metodo APi.CreateChart. Nei parametri, specifichiamo lo stile del grafico e i dati visualizzati:

 var oChart = Api.CreateChart("bar3D", [
  [200, 240, 280],
  [250, 260, 280]
  ], ["Projected Revenue", "Estimated Costs"], [2014, 2015, 2016], 4051300, 2347595, 24);

Successivamente, impostiamo la dimensione e la posizione sulla diapositiva. Nel nostro caso, rimpiccioliamo un grafico e lo centriamo. In questo modo, non si sovrappone al testo. E inseriamo il grafico nella diapositiva eseguendo il metodo AddObject:

oChart.SetSize(150 * 36000, 90 * 36000);
oChart.SetPosition(3267200, 1000000);
oSlide.AddObject(oChart);

L’intero codice della macro è il seguente:

(function()
{
    var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
    var oSlide = oPresentation.GetSlideByIndex(i);
    var aShape = oSlide.GetAllShapes();
     aShape[0].Delete();
    var oChart = Api.CreateChart("bar3D", [
       [200, 240, 280],
    [250, 260, 280]
       ], ["Projected Revenue", "Estimated Costs"], [2014, 2015, 2016], 4051300, 2347595, 24);
     oChart.SetSize(150 * 36000, 90 * 36000);
     oChart.SetPosition(3267200, 1000000);
     oSlide.AddObject(oChart);
}
})();

Ora eseguiamo la nostra macro e vediamo come funziona!

Ci auguriamo che questa piccola macro bizzarra elevi alcuni dei tuoi compiti banali. Le macro di ONLYOFFICE sono estremamente versatili e possono essere adattate alle tue esigenze. Ti invitiamo a sfruttare i nostri metodi API e creare le tue macro. Sentiti libero di fare domande o condividere le tue idee con noi. Siamo aperti alla collaborazione. Buona fortuna per i tuoi sforzi esplorativi!