Avec la popularité croissante de Google Docs, on s'attend à une forte demande de connexion à des systèmes externes à des fins diverses, telles que l'échange de données, la visualisation de données, etc. Dans cet article, je vais vous montrer comment connecter Graphiques Flash (FusionCharts) pour Google Spreadsheets et tracer des données en temps réel à l'aide de JavaScript.
Avant d’explorer les aspects techniques liés à la récupération de données à partir de feuilles de calcul Google, je vais en présenter un aperçu à FusionCharts et commencer mon explication à partir du niveau racine. Cela profitera à ceux qui ont rencontré FusionCharts pour la première fois. Une version sans restriction de FusionCharts peut être téléchargée à l'adresse www.fusioncharts.com/download. FusionCharts a également une version totalement gratuite sur www.fusioncharts.com/free; mais cet article utilise beaucoup de fonctionnalités de FusionCharts v3, il est donc recommandé de télécharger FusionCharts v3.
Tout le code associé à cet article (et quelques exemples supplémentaires) est disponible en téléchargement avec cet article.
FusionCharts est une solution de création de graphiques Flash qui vous aide à créer des graphiques animés et interactifs pour les pages Web. FusionCharts est essentiellement un ensemble de fichiers SWF qui s’exécutent dans Adobe Flash Player et acceptent les paramètres de données et de configuration au format XML, le rendant ainsi compatible entre scripts et plates-formes. Le XML est intuitif et peut être appris facilement à l’aide d’une documentation exhaustive en ligne, accessible à l’adresse www.fusioncharts.com/docs..
De plus, si vous n'êtes pas un inconditionnel de XML, FusionCharts est livré avec une vaste gamme d’API, ce qui facilite son implémentation avec toutes les formes de technologies de programmation Web telles que ASP, ASP.NET, PHP, Ruby on Rails, Python etc..
FusionCharts Les fichiers SWF peuvent être incorporés dans une page HTML à l’aide de la
Construisons rapidement un graphique illustrant les données présentées dans le tableau ci-dessous..
Appareil | Unités en watts |
Éclairage | 1200 |
Chauffe-eau | 1800 |
Bureau | 1500 |
Glacière | 1200 |
Ascenseur | 1500 |
Four micro-onde | 1600 |
Télévision | 1500 |
Machine à laver | 2800 |
Système musical | 2200 |
Nettoyants | 600 |
Le code suivant constitue la source de données XML correspondant au tableau de données ci-dessus:
Assez simple et intuitif, n'est-ce pas? le
Maintenant que le XML est prêt (nous l'avons enregistré sous le nom myXML.xml), nous devons incorporer le graphique dans une page HTML à l'aide du code suivant:
Mon graphique DIV
Le code (ci-dessus) crée une DIV nommée firstChartDiv qui servira de conteneur pour le graphique. Ensuite, une instance de l'objet FusionCharts est créée à l'aide de JavaScript et les paramètres suivants y sont transmis..
La ligne de code suivante fournit le nom du fichier de source de données XML externe (myXML.xml dans ce cas). Et la dernière ligne du code JavaScript indique le nom du conteneur DIV dans lequel le graphique sera rendu. Lorsque vous utilisez la classe JavaScript pour incorporer le graphique, il est nécessaire de créer un conteneur DIV pour le graphique..
Le graphique suivant est généré par le code. L'image ci-dessous montre une version statique; le graphique réel est animé et permet une interactivité telle que le découpage de tartes, la rotation du graphique, les info-bulles, etc..
Maintenant que nous avons couvert le processus de création de graphiques à l'aide d'une source de données statique, passons au processus de rendu d'un graphique à l'aide de données obtenues à partir d'un tableur Google..
Les feuilles de calcul Google Documents transfèrent les données sous forme de flux JSON. Par conséquent, afin de générer des graphiques à l'aide de données obtenues à partir d'une feuille de calcul Google, il est important de convertir les flux JSON acquis au format XML, comme requis par FusionCharts..
Il existe plusieurs façons de convertir JSON en XML. Vous pouvez également écrire votre propre code pour extraire chaque élément JSON et le convertir en XML. Vous pouvez également utiliser des moteurs à base de règles tels que JsonT pour vous aider dans ce processus. Nous utiliserons JsonT pour cet article, car il nous aide à faire les choses plus facilement et plus rapidement. JsonT peut être téléchargé à partir de http://goessner.net/articles/jsont/
En utilisant JsonT, on peut facilement définir une règle pour convertir les données JSON en une chaîne du format souhaité. Voici un exemple de données JSON:
var coffeeSalesJSON = "Espresso": "5000", "Cappuccino": "6000", "Latte": "7000", "affogato": "4000", "Cortado": "2000", "Macchiato": "3000 "," Frappuccino ":" 6000 ";
Le code suivant convertit les données JSON (affichées ci-dessus) au format FusionCharts XML, puis crée un graphique à partir de celles-ci..
var JSONParseRules = "self": "\ n @getData (#) "," getData ": function (x) var c =" "; pour (var i in x) c + =" \ n"; return c; var coffeeChartStrXML = jsonT (coffeeSalesJSON, JSONParseRules); var coffeeChart = new FusionCharts (" Column3D.swf "," CoffeeChartId "," 600 "," 350 "," 0 "," 0 "); coffeeChart.setDataXML (coffeeChartStrXML); coffeeChart.render ("coffeeChartDiv");
Pour que le code fonctionne, il est essentiel de lier le fichier JavaScript jsont.js à la page HTML..
Le code (ci-dessus) construit XMLstring à partir de données JSON à l'aide d'une règle, qui parcourt chaque paire clé-valeur de données JSON et traite les noms de clé en tant que catégories et les valeurs en tant que valeurs de données pour le graphique. Vous pouvez en savoir plus sur les règles JsonT à l'adresse http://goessner.net/articles/jsont/. Ensuite, nous utilisons ce XML et construisons le graphique.
Pour utiliser une feuille de calcul Google en tant que source de données dynamique pour le graphique, il est essentiel de la publier pour une consultation publique. Au moment de la publication du document pour un affichage public, Google génère une clé unique. Cette clé est utilisée pour demander des flux de données à Google. il est donc important de conserver la clé.
Veuillez noter que, pour utiliser les flux JSON de Google, il est essentiel de modifier légèrement josnt.js. J'ai apporté des modifications mineures à jsont.js afin d'éviter le conflit résultant de l'utilisation de $ par Jsont.js de $ comme pointeur d'objet et de l'utilisation de $ comme nom de propriété par le flux JSON généré par Google. J'ai modifié Jsont.js pour qu'il utilise # comme pointeur d'objet.
Pour cet exemple démonstratif, j'ai créé un tableur Google comprenant trois feuilles, chacune contenant les données de ventes annuelles pour les années 2006, 2007 et 2008. Le tableur peut être consulté via le lien suivant http://docs.google.com..
Le processus de création d'une feuille de calcul Google
Le code suivant vous aidera à générer un graphique tracé à l'aide de données extraites de la feuille de calcul Google:
Le graphique se chargera ici
Voici comment fonctionne le code:
Le programme démarre en déclarant une variable nommée "feuilles" pour stocker le tableau de définitions de feuille de calcul obtenu à partir de la feuille de calcul Google spécifiée. Il déclare ensuite la variable de compteur 'sheetCount' qui permet de suivre le nombre de feuilles de calcul à partir desquelles des données ont été reçues. Ce compteur garantit que le graphique est rendu, une fois que toutes les données ont été reçues..
Ensuite, l'objet 'chartConfigJSON' est déclaré pour stocker les paramètres de configuration du graphique..
Le XML qui serait construit progressivement sera stocké dans un tableau nommé 'strXML'. Lorsque le processus de construction XML est enfin terminé, les éléments du tableau seront joints pour former la chaîne XML..
Ensuite, la fonction initpage () placée dans le corps du code HTML est appelée lorsque l'événement onload se produit. Cette fonction appelle à son tour le getGoogleSpreadsheetData () qui demande les données de la feuille de calcul sous forme de flux JSON. La fonction getGoogleSpreadsheetData () demande les données de la feuille de calcul en envoyant la clé de feuille de calcul générée par Google. Elle spécifie également le format du flux et gère le flux une fois reçu..
getGoogleSpreadsheetData ("p06JfhjnK8PwEWRkmlWiiQg", "parseSpreadsheet", "json-in-script", "feuilles de calcul")
getGoogleSpreadsheetData (feuilles [i] .link [0] .href, "parsespreadsheet", "json-in-script");
L'élément link [0] .href contient l'URL des types de flux disponibles, qui est transmise à la fonction. Une fois le flux reçu, la fonction de rappel parsespreadsheet est appelée et les données JSON lui sont transmises..
var seriesName = gjson.feed.title. $ t;
règle = "self": "# ", "soi[*]":""; strXML [1] = jsonT (feedEntries, rule);
règle = "self": "# ", "soi[*]":""; strXML [2] + = jsonT (feedEntries, rule);
Lorsque ce code est exécuté, le graphique suivant sera généré dans votre page.
Le graphique multi-séries créé à l'aide de données obtenues à partir d'un document de feuille de calcul Google
Maintenant que nous avons pu générer un graphique, allons encore plus loin et ajoutons la possibilité de l'exporter sous forme d'images ou de PDF. Cela sera très utile pour envoyer des courriers électroniques à vos collègues..
La dernière version de FusionCharts (v3.1) fournit une gamme complète de fonctionnalités d'exportation. Vous pouvez exporter les graphiques au format PDF, PNG ou JPEG - côté client ou les enregistrer également sur le serveur..
Dans notre exemple, comme nous n'utilisons aucun script côté serveur, nous nous en tiendrons à l'exportation côté client. Côté client, la fonctionnalité d'exportation est implémentée à l'aide de FusionCharts. Composants d'exportation côté client - nom collectif attribué à FusionChartsExportComponent.js et FCExporter.swf. FCExporter.swf est le moteur d'exportation côté client qui permet d'exporter des graphiques. Le fichier JavaScript fournit une interface entre le graphique et le fichier FCExporter.swf..
Cette classe JavaScript facilite le rendu du fichier FCExporter.swf, qui est le moteur d'exportation et sert également d'interface utilisateur graphique. Avec l'aide des API d'exportation, vous pouvez facilement personnaliser l'apparence de l'interface graphique. Les API vous permettent également de contrôler les aspects fonctionnels de l'interface graphique. Le code suivant illustre le processus:
function loadExportComponent () // initialise le composant d'exportation FusionCharts // met tous les paramètres dans les paramètres exportComponent = new FusionChartsExportObject ('exportComponentH', 'FCExporter.swf', width: '250', height: '250', fullMode: 1, saveMode: 'both', defaultExportFormat: "pdf", showAllowedTypes: 1, saveAllTitle: 'Save All', btnSaveAllTitle: 'En tant que fichier unique', defaultExportFileName: "SalesReport", exportFormat: "PDF", exportCandonler " , exportAtClient: 1); exportComponent.Render ('composantContainer');
Le code (ci-dessus) configure l'interface graphique d'exportation afin d'afficher un bouton qui déclenche le processus d'exportation. De plus, chaque graphique serait répertorié dans le panneau de l'interface graphique et l'utilisateur aurait la possibilité d'exporter tous les graphiques dans un seul fichier PDF. L’interface graphique permettra également à l’utilisateur de changer le format d’exportation par défaut de PDF à jpeg ou png.
Afin de démontrer le processus d’exportation, j’ai ajouté le code permettant de configurer l’interface graphique d’exportation au code générant un graphique basé sur les données dérivées du document de feuille de calcul Google. Cependant, j'ai apporté quelques modifications au code afin qu'il rende maintenant trois graphiques en une seule série au lieu d'un seul graphique en plusieurs séries. Chaque graphique affichera des données relatives à une feuille de calcul particulière.
Voici le code combiné:
Vous trouverez ci-dessous une description du processus d’exportation vu du côté client:
Et avec cela, nous terminons cet article. FusionCharts offre beaucoup plus de fonctionnalités potentiellement utilisables. La création de graphiques à partir de données stockées dans des feuilles de calcul Google n'est qu'un exemple d'innovations possibles avec FusionCharts. Merci d'avoir lu!