J'extrais un numéro d'un fichier XML en ligne avec Google Spreadsheets. Parfois, le nombre commence par un zéro mais la feuille de calcul le supprime. Je suis sûr que le format de la cellule est "texte brut" (j'appuie sur 020 et 020
apparaît), mais après avoir entré la formule, c'est comme si elle devenait 'nombre'.
En supposant que ces données XML:
<sudoc service="ean2ppn">
<query>
<ean>9782870098585</ean>
<result>
<ppn>080253431</ppn>
</result>
</query>
</sudoc>
En utilisant une formule telle que:
=IMPORTXML("http://www.sudoc.fr/services/ean2ppn/9782870098585","/sudoc/query/result/ppn")
retournera 80253431
alors que je voudrais qu'il retourne 080253431
. Comment pourrais-je y parvenir?
Avec la formule TEXT(number, format)
on peut forcer l'affichage des zéros.
Dans mon cas, la formule est maintenant: =TEXT(IMPORTXML(linkOfData,xpath), "000000000")
Si ppn est considéré comme faisant partie d'un code, je suggérerais alors de procéder comme suit:
function ean2ppn(value) {
// create array to hold results
var output = [];
// build URL
var url = "http://www.sudoc.fr/services/ean2ppn/"+value+"&format=text/json";
// fetch data as text
var txt = UrlFetchApp.fetch(url).getContentText();
// convert to JSON
var data = JSON.parse(txt);
// preset result
var results = data.sudoc.query.result;
// prepare output
if(typeof results.length != "number") {
output.Push(results.ppn);
} else {
for(var i in results) {
output.Push(results[i].ppn);
}
}
// return output to sheet
return output;
}
Sur le site this, vous trouverez un exemple d'utilisation de JSON. Le code ci-dessus, construit l'URL, récupère les données et les analyse. Ensuite, le contenu de la ppn est renvoyé. Ensuite, vous pouvez décider si la valeur extraite est une chaîne ou un nombre.
Ajoutez le code sous Outils> Editeur de script, appuyez sur le bouton "bug" et le tour est joué !!
Les quotas suivants sont applicables à URLFetchApp (Gmail, Google Apps, GA for Business):
Voir le tableau de bord de script Google Apps: https://script.google.com/dashboard
J'ai créé un exemple de fichier pour vous: ean2ppn