26. Automatisation avec les données JSON

Vous pouvez utiliser des données disponibles dans JSON pour dupliquer des graphiques créés en premier lieu comme modèle et fournir une nouvelle feuille de données pour ces dernières. Vous pouvez contrôler l’ordre dans lequel des modèles spécifiques sont utilisés pour créer une nouvelle présentation. Les modèles peuvent également être utilisés plusieurs fois.

Les deux modèles PowerPoint et les données JSON peuvent être stockés localement ou à distance. Les données JSON peuvent même être générées à la volée par un service Web.

26.1
Structure des données JSON pour think-cell
26.2
Création d’une présentation à l’aide des données JSON
26.3
Obtenir des données JSON à distance
26.4
Accéder au modèle à distance
26.5
Traitement des données JSON à distance

26.1 Structure des données JSON pour think-cell

Un exemple des données JSON pour think-cell est donné ci-dessous et peut se trouver dans le dossier sample.ppttc du sous-dossier ppttc du répertoire d’installation think-cell. Le JSON indique une présentation à créer à partir d’une concaténation de modèles. Il correspond au schéma disponible dans ppttc/ppttc-schema.json.

Exemple de fichier JSON de l’automatisation think-cell.

Au niveau de la racine se trouve un ensemble d’éléments. Chaque élément indique un fichier modèle et des données pour ses graphiques. Il est possible de concaténer différents modèles et un seul modèle peut être utilisé plus d’une fois. Dans le cas le plus simple, un seul modèle est utilisé une seule fois pour remplir tous les tableaux contenus dans le modèle en question avec des données.

Chaque élément de l’ensemble des modèles concaténés contient deux clés : image.  template et image.  data. La valeur de image.  template correspond au chemin d’accès d’un fichier PowerPoint comportant des graphiques think-cell pour lesquels un nom a été défini comme identificateur (voir 24. Présentation de l’automatisation). Le fichier modèle peut également être récupéré à partir d’un emplacement distant, comme décrit dans Obtenir des données JSON à distance.

La valeur de la clé image.  data est une liste de tableaux de données au format JSON des graphiques contenus dans le modèle. Chaque élément de la liste possède deux propriétés : image.  name et image.  table. image.  name indique un graphique utilisant son nom et image.  table contient le tableau de données.

La structure de la valeur du image.  table correspond directement à une feuille de données non transposée, avec les lignes qui représentent des séries et les colonnes qui représentent des catégories. Pour un graphique par défaut qui signifie que l’ordre des lignes suivantes sera représenté :

  1. Une ligne comportant d’abord une cellule vide (null), puis des cellules avec des noms de catégories.
  2. Une ligne de 100 % valeurs. Si aucune valeur 100 % n’est utilisée, la ligne vide sera désignée comme image.  [].
  3. Plusieurs lignes avec une première cellule qui indique le nom de la série et les cellules subséquentes qui contiennent des valeurs numériques.

Un graphique auquel on peut attribuer un nom peut être référencé dans JSON. Pour leur structure spécifique de feuille de données, veuillez vous référer au chapitre correspondant ou ouvrez simplement la feuille de données interne du graphique pour référence.

Remarque: Les cellules présentes dans la plage de la feuille de données think-cell peuvent contenir tout type de texte. Si nécessaire, la première cellule de la première ligne peut également être remplie.

Les données composant la valeur d’une clé table doivent respecter certaines règles définies dans le schéma. La valeur de la clé table elle-même est un tableau. Les sous-ensembles représentent les lignes de la feuille de données. Les lignes vides peuvent être spécifiées en utilisant un tableau vide []. Le contenu d’une cellule est décrit par les éléments énumérés dans ce type de sous-ensemble. L’ordre des éléments correspond à l’ordre des colonnes d’une feuille de données. Une cellule vide doit être décrite de manière explicite à l’aide de l’élément null. Les cellules dont le contenu doit être décrit à l’aide d’une autre paire clé-valeur. Dans ce cas, la clé décrit le type de données et la valeur contient les données qui doivent être effectivement affichées dans la présentation. Trois types de données sont pris en charge :

image.  string pour toute sorte de texte. Tous les caractères unicode (UTF-8) sont pris en charge. Exemple : {"string":"Echo"}

image.  number pour toute sorte de nombres. Le séparateur décimal utilisé doit être un point. Exemple : {"number":"5"}

image.  date pour les dates. Le format requis est YYYY-MM-DD. Exemple : {"date":"2016-09-04"}

Toute mise en forme du contenu des cellules (par exemple, indication du format de la date) doit être effectuée dans le modèle PowerPoint.

Pour les champs de texte nommés, l’élément table est constitué d’une seule « cellule » sur une « ligne ». Vous devez donc utiliser un ensemble JSON comme dans le fragment suivant, qui apparaîtra une fois pour chaque champ de texte nommé au sein d’un élément data :

{ 
  "name": "Title", 
  "table": [[{"string":"A slide title"}]] 
},

26.2 Création d’une présentation à l’aide des données JSON

Le fichier de données JSON doit avoir un type de fichier de .ppttc. Lors de l’ouverture de ce type de fichier :

  1. think-cell lit le fichier et vérifie son intégrité structurale.
  2. Une nouvelle présentation est créée. Pour chaque élément situé au niveau supérieur du fichier JSON, la nouvelle présentation contient une copie du modèle spécifié.
  3. Dans les copies de modèles, les feuilles de données des graphiques identifiés par les valeurs name sont remplacées par les données des valeurs table. Les libellés de totaux, les placements des libellés et les valeurs des flèches de différence ou les autres décorations de graphique sont mis à jour.

Par la suite, la nouvelle présentation s’affiche. L’utilisateur peut continuer à modifier son contenu et l’enregistrer ou l’utiliser d’une autre manière.

Vous pouvez également créer une présentation à partir de données JSON sur la ligne de commande :

ppttc input.ppttc -o output.pptx

L’exécutable ppttc.exe est situé dans le dossier d’installation de think-cell. L’appel ppttc.exe est facile à intégrer dans les flux d’automatisation.

26.3 Obtenir des données JSON à distance

Les données JSON disponibles dans un fichier .ppttc peuvent être également générées à distance par un service Web et mises à la disposition de l’utilisateur pour téléchargement dans un navigateur Web. Veuillez consulter l’échantillon prévu ci-dessous et disponible dans sample.html du sous-dossier ppttc du répertoire d’installation think-cell.

<!DOCTYPE html> 
<html> 
<body> 
 
<h1>ppttc test</h1> 
 
<button type="button" onclick="myFunction()"> 
Download .ppttc 
</button> 
 
<a id="downloader" style="display:none"/> 
 
<script> 
function myFunction() { 
  var obj = [ 
    { 
      template : "https://static.think-cell.com/ppttc/template.pptx", 
      data: [ 
        { 
          name: "Chart1", 
          table: [ 
            [null, {string:"Alpha"},{string:"Bravo"},{string:"Charlie"}], 
            [], 
            [{string:"Delta"},{number:1},{number:2},{number:3}], 
            [{string:"Echo"},{number:4},{number:5},{number:6}] 
          ] 
        }, 
        { 
          name: "Chart2", 
          table: [ 
            [null, {date:"2016-09-03"},{date:"2016-09-04"},{date:"2016-09-05"}], 
            [], 
            [{string:"Foxtrot"},{number:7},{number:8},{number:9}], 
            [{string:"Gulf"},{number:10},{number:11},{number:12}] 
          ] 
        } 
      ] 
    } 
  ]; 
  var elemDownloader = document.getElementById("downloader"); 
  elemDownloader.setAttribute("href","data:application/vnd.think-cell.ppttc+json;charset=utf-8," 
    + encodeURIComponent(JSON.stringify(obj))); 
  elemDownloader.setAttribute("download", "sample.ppttc"); 
  elemDownloader.click(); 
} 
</script> 
 
</body> 
</html>

Dans notre exemple, les données JSON sont compilées à la volée lorsque l’utilisateur sollicite un téléchargement. Si l’exemple inclut des données statiques, vous pouvez naturellement créer JSON de manière dynamique à partir d’autres sources de données à l’aide des paramètres indiqués par l’utilisateur sur votre site Web.

Lorsqu’un fichier .ppttc est téléchargé, l’utilisateur peut choisir d’enregistrer le fichier ou de l’ouvrir de manière semblable à tous les autres téléchargements. Lors de l’ouverture du fichier, les données JSON servent à créer une nouvelle présentation, telle que décrit à Création d’une présentation à l’aide des données JSON.

26.4 Accéder au modèle à distance

Les fichiers du modèle comportant les graphiques think-cell peuvent également être fournis par le biais d’un serveur distant. Dans ce cas, la valeur de la clé template est une URL au lieu d’un chemin d’accès local, comme indiqué dans l’exemple JSON distant. L’URL peut spécifier http comme le protocole, https pour une connexion sécurisée ou tout autre protocole valable sur ce système où le fichier .ppttc est ouvert.

Lors du traitement d’un fichier .ppttc qui se rapporte à un modèle distant, PowerPoint récupère le fichier du modèle. Par conséquent, l’utilisateur qui a ouvert le fichier .ppttc a besoin d’un accès approprié au modèle distant.

Lorsque les données JSON sont générées à distance par un service Web et que les modèles sont également sauvegardés à distance, seule une installation think-cell standard est nécessaire sur la machine de l’utilisateur pour utiliser les présentations PowerPoint générées dynamiquement avec des graphiques think-cell.

26.5 Traitement des données JSON à distance

Vous pouvez gérer le traitement des données JSON de think-cell comme un serveur. Dans ce cas, la fusion des données JSON avec des modèles pour créer des présentations PowerPoint est réalisée sur un serveur à distance. Le serveur reçoit des fragments JSON comme entrée et fournit les présentations PowerPoint fusionnées comme résultat, les deux via HTTP.

Pour démarrer le serveur think-cell, allez au dossier d’installation et exécutez tcserver.exe. La boîte de dialogue suivante s’ouvre :

boîte de dialogue de configuration du serveur think-cell.

Pour démarrer le serveur :

  1. Spécifiez l’adresse et le port IP que le serveur doit écouter dans le champ UrlPrefix sous la forme d’une URL. La première partie de l’URL détermine si le protocole utilisé est chiffré (HTTPS) ou non chiffré (HTTP).
  2. Cliquez sur le bouton Appliquer.
  3. Confirmez les modifications apportées à la configuration de votre système dans la boîte de dialogue du Contrôle du compte d’utilisateur (UAC).

Dans le champ Journal en bas de la fenêtre, une confirmation que le serveur a commencé et est maintenant en train d’écouter une URL s’affiche. Vous verrez également toutes les demandes des clients et les réponses du serveur dans le champ Journal.

Boîte de dialogue du serveur think-cell avec messages de journal.

Pour arrêter le serveur, cliquez sur le bouton Supprimer. Pour modifier l’URL, saisissez une nouvelle URL dans le champ UrlPrefix et cliquez sur Appliquer.

Le serveur reçoit les données JSON comme requêtes HTTP POST de type MIME application/vnd.think-cell.ppttc+json et répond avec un fichier PowerPoint.

Pour commencer à utiliser le serveur, veuillez copier l’URL du champ UrlPrefix et ouvrez-la dans un navigateur. Un exemple de page s’affiche. Le serveur est auto-documenté, grâce au code source HTML de l’exemple de page montrant son utilisation ainsi qu’un exemple plus élaboré. L’exemple contient les éléments suivants :

  • le balisage HTML pour un bouton qui utilise une méthode utilisant XMLHttpRequest pour communiquer avec le serveur lorsque l’on clique dessus ;
  • un fragment JSON statique ; Dans le cadre de votre utilisation, vous générerez typiquement les données JSON de manière dynamique.
  • une fonction JavaScript pour envoyer les données JSON au serveur. Cela permet de générer la requête HTTP POST avec les données JSON statiques. La réponse du serveur est présentée au navigateur comme un téléchargement de fichier.

Toute autre méthode de génération de requêtes HTTP POST et d’enregistrement de la réponse du serveur comme fichier PowerPoint fonctionne également. Dans le cadre de votre utilisation, vous n’êtes pas limité à l’utilisation de JavaScript à ces fins.

Partager