Utilisez la macro ONLYOFFICE pour remplacer les formes par des graphiques

23 novembre 2022By Dasha

Les présentations sont devenues un élément essentiel de notre vie. Qu’il s’agisse d’une réunion d’affaires ou d’un projet scolaire, nous en avons besoin pour présenter notre vision au public. Ajustez votre présentation de 100 diapositives peut être un travail un peu fastidieux. Ce billet de blog vous montrera comment aborder cette tâche avec la macro ONLYOFFICE.

Use ONLYOFFICE macro to replace shapes with charts Notre petite macro va remplacer les formes par des graphiques sur chaque diapositive. Avant de poursuivre, précisons le positionnement des éléments. Contrairement aux feuilles de calcul où les lignes et les colonnes peuvent être atteintes par index, nous ne pouvons cibler un élément de présentation que par sa position sur la diapositive. Les éléments sont placés les uns sur les autres. Et cela implique que nous pouvons les localiser en poussant tous les éléments dans un tableau et en itérant à travers celui-ci.

Construction d’une macro

Tout d’abord, nous ciblons la présentation active avec la méthode Api.GetPresentation :

var oPresentation = Api.GetPresentation();

Puis nous ajoutons une boucle for qui itère à travers chaque diapositive de la présentation. Donc i ici est le nombre total de diapositives. Et nous récupérons chaque diapositive en la passant en tant qu’index :

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

Après cela, nous exécutons la méthode GetAllShapes. Elle collecte toutes les formes de la diapositive et les renvoie dans un tableau :

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

Maintenant, il nous faut supprimer les formes des diapositives. Les formes et les dessins héritent des mêmes propriétés, ce qui nous permet d’utiliser la méthode Delete. Elle supprime une forme ou un dessin de la diapositive. Dans notre cas, les formes sont placées en bas. Nous passons donc 0 comme index pour supprimer tous les éléments du bas :

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

Ensuite, nous ajoutons un graphique en implémentant la méthode APi.CreateChart. Dans les paramètres, nous spécifions le style du graphique et les données affichées :

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

Après cela, nous définissons la taille et la position sur la diapositive. Dans notre cas, nous réduisons la taille du graphique et le centrons. De cette façon, il ne chevauche pas le texte. Et nous insérons le graphique dans la diapositive en exécutant la méthode AddObject :

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

Le code entier de la macro est le suivant :

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

Maintenant, exécutons notre macro et voyons comment elle fonctionne !

Nous espérons que cette petite macro excentrique vous permettra d’améliorer certaines de vos tâches quotidiennes. Les macros ONLYOFFICE sont extrêmement polyvalentes et peuvent être adaptées à vos besoins. Nous vous encourageons à tirer parti des méthodes de notre API et à créer vos propres macros. N’hésitez pas à poser des questions ou à partager vos idées avec nous. Nous sommes ouverts à la discussion et à la coopération. Nous vous souhaitons bonne chance dans vos projets d’exploration !