SERVICEWEB (SERVICEWEB, fonction) – Support Microsoft
Qu’est-ce que c’est un service web ?
Service web — Wikipedia (wikipedia.org)
En gros un site qui répond à votre demande d’information (exemple : distance Dijon-Lyon, propriétaire du site ayant telle adresse…)
Je vous propose de découvrir la fonction SERVICEWEB au travers de plusieurs exemples.
Il faut bien évidemment une connexion internet pour accéder à ces services.
Ces sites/services/API web sont parfois payants parfois limités, parfois nécessitant une clé identification.
Les services utilisés comme exemple sont libres d’accès mais certains peuvent changer de politique d’accès ou disparaître du jour au lendemain !
Cette fonction renvoie souvent des données sous forme d’une chaîne :
- XML (Extensible Markup Language — Wikipedia (wikipedia.org)
- JSON (JavaScript Object Notation — Wikipédia (wikipedia.org))
Ces chaines de texte normées (XML/JSON) contiennent des balises/clés permettant de « facilement » récupérer une portion spécifique.
De cette chaîne, on extrait donc l’information qui nous intéresse via la fonction FILTRE.XML (pour le XML) ou via des fonctions de manipulation de chaîne ou via par l’outil Excel PowerQuery (pour le JSON).
MAJ : 4 autres services sont présentés dans l'article Exploiter des données d'Internet avec la fonction SERVICEWEB 2 (suite).
- Graphiques intégrés aux cellules,
- Information sur les sociétés,
- Liste des jours fériés par pays,
- Informations sur Chuck Norris (😁).
Service 1 : Information sur une IP
Objectif : "Géolocalise moi !".
Site : http://ip-api.com
On a ici le choix XML ou JSON (cf https://ip-api.com/docs) mais ce n’est pas toujours le cas !
B2
=SERVICEWEB("http://ip-api.com/xml/") ' > On obtient une chaine XML
B5
=FILTRE.XML(B2;"query/region") ' > La balise query puis region renvoie BFC
Service 2 : Informations sur une IP
Objectif : Récupérer une information concernant une adresse IP.
Sites :
– http://ip-api.com
– https://ipapi.co
Exemple illustrant que chaque site a sa syntaxe !
Version mono-formule :
=FILTRE.XML(SERVICEWEB("http://ip-api.com/xml/8.8.8.8");"query/org") ' > Renvoie GOOGLE
=FILTRE.XML(SERVICEWEB("https://ipapi.co/8.8.8.8/xml/");"root/org") ' > Renvoie GOOGLE
Service 3 : Informations sur une adresse postale
Objectif : Contrôler la validité d’une adresse.
Site : https://adresse.data.gouv.fr/api-doc/adresse
Ici, la difficulté est de traiter le retour en format JSON !
On va passer par PowerQuery et pour "simplifier", on récupère une table et non une simple valeur.
Le nombre d’étapes de transformation est spécifique à chaque chaîne JSON
1-Importer la chaine dans PowerQuery
Ruban Données>A partir de Tableau ou d’une plage (groupe Récupérer et transformer des données).
2-Convertion de la chaîne JSON dans PowerQuery
Ruban Transformer > Analyser > JSON
3-On développe la colonne (ici JSON)
4-Idem pour la colonne features
La valeur de la colonne Features passe de List à Record.
5-On recommence la colonne features
Si l’adresse est incorrecte, plusieurs variantes d’adresse sont retournées (1 par ligne).
Via la colonne geométrie, on peut accéder aux coordonnées géographiques (latitude/longitude) du lieu.
6-On affiche les valeurs de la colonne properties
Vu que l’on a un enregistrement unique (1 ligne), je propose de le présenter en table (2 colonnes et n lignes) sinon ce serait en tableau (on ferait Développer la colonne).
Cliquer sur Record.
Affichage de l'enregistrement dans PowerQuery.
Puis Convertir > En table
7-Retour dans Excel (Ouf !)
Ruban Accueil > Fermer et charger dans...
Résultat :
La valeur score reflète l’exactitude de l’adresse par rapport à celle renvoyée (j’imagine).
Service 4 : Fulgurances de Kanye West
Objectif : Ouvrir son esprit et apprendre des grands de ce monde.
Site : https://api.kanye.rest
Pour finir, on se détend avec encore du JSON mais en beaucoup plus simple comme notre ami.
JSON renvoyant une citation de KanyeWest.
Merci pour votre attention bienveillante.
2 commentaires