2007/10/01

Google Tableur : exemple d'utilisation d'ImportXML

Une des fonctions les plus impressionnantes de Google Tableur est sans nul doute ImportXML (url, query). Cette fonction permet de charger le document XML identifié par url, d'extraire de ce document une liste de données avec la requête Xpath query, et d'utiliser ces données pour remplir les lignes du tableur.

Une fois passés la barrière du bug de localisation, et quelques tâtonnements pour comprendre comment les données récupérées sont rangées dans les cellules, on arrive à faire des choses intéressantes. Bien sûr il faut comprendre un peu Xpath, mais ce n'est pas si compliqué que cela.

Supposons par exemple que vous vouliez récupérer dans votre tableur toutes les URLs retournées par une recherche Google. Il suffit de mettre la formule suivante :

A1 = ImportXML(url_recherche, "//a[@class='l']/@href")
Pour que toutes les URLs des résultats soient extraites et positionnées en colonne A. Si votre recherche retournait 10 résultats, les 10 premières lignes seront remplies, si elle retournait les 50 premiers résultats, les 50 premières lignes seront remplies, etc...

Et chaque fois que vous ouvrirez ce document, la requête sera rejouée et les données à jour seront rechargées !!! Wow !!! Je pense qu'on n'a pas fini de voir des utilisations de cette fonction !

Quelques conseils pour terminer si vous vous laissez tenter par ImportXML :
  • ne vous laissez pas intimider par le nom, ça marche aussi pour du contenu HTML un tant soit peu moderne et bien formé
  • les résultats des requêtes ont l'air d'être cachés par Google, donc ne vous attendez pas à voir les résultats varier de seconde en seconde. Apparemment la fréquence de rafraîchissement est plutôt de l'ordre de l'heure pour l'instant.
  • si votre requête Xpath retourne du texte qui contient des balises XML, ImportXML interpretera chaque balise comme indiquant un changement de colonne. C'est pratique quand vous retournez le contenu d'un TR (chaque TD ira dans une colonne différente), mais c'est pénible si vous récupérez du texte qui a une balise B au milieu, car votre texte se retrouve découpé sur plusieurs colonnes. Du coup il vaut mieux récupérer des valeurs d'attributs (dans l'exemple "//a[@class='l']/@href" on ne récupère pas tout le contenu du noeud A dont la classe est 'l', mais uniquement la valeur de l'attribut href)
Et maintenant à vous de jouer !

Aucun commentaire: