Récupération de données JSON dans GOOGLE SHEET

Bonjour,

Je souhaite mettre à jour des cellules GOOGLE SHEET depuis des valeurs récupérées dans des fichiers JSON en ligne.
Par exemple, je souhaite récupérer la valeur askPrice du fichier json accessible à cette adresse que je ne peux pas coller lol :) mais qui donne par exemple le résultat suivant

{
symbol: "BTCEUR",
bidPrice: "53076.65000000",
bidQty: "0.00028200",
askPrice: "53085.99000000",
askQty: "0.08022700"
}

J'aimerais que cette valeur puisse être réactualisée soit à chaque recalcul de la feuille, soit en rajoutant une petite fonction refresh cliquable.
Bizarrement, je ne trouve pas de fonction 'standard' permettant d'importer du json dans GOOGLE SHEET...?

J'ai essayé d'utiliser un script IMPORTJSON mais sans réel succès pour le moment...

Pourriez-vous m'aider svp?

Merci par avance :)

Bonjour,

pas de soucis, mais peux-tu mettre un lien vers une copie simplifiée de ton projet ? merci

dans ton cas particulier, on peut faire plus simple ...

Dans un premier temps ...

function askPrice(data) {
  return data.match(/(?<=askPrice: ").*(?=")/g)
}

on pourra ensuite y greffer l'url

tu peux aussi dans l'appel de la fonction mettre une zone quelconque (ici une check box) qui lors du changement de valeur relancera le calcul automatiquement , même si la fonction n'en fait pas mention

capture d ecran 593

une fonction qui s'appuiera directement sur l'url

function askPrice(url) {
  var data = UrlFetchApp.fetch(url).getContentText()
  return data.match(/(?<=askPrice: ").*(?=")/g)
}

après, tout dépend de tes paramètres régionaux si tu veux une valeur numérique

Merci :)
L'url est https://api(point)binance(point)com/api/v3/ticker/bookTicker?symbol=BTCEUR

Replacer (point) par un . :)

Désolé mais je ne peux pas envoyer de lien url dans le forum pour le moment.

Je n'arrive pas à faire fonctionner le script avec cette url...? Avez-vous une idée?

En effet avec cette url, voici la réponse que j'ai

https://api.binance.com/api/v3/ticker/bookTicker?symbol=BTCEUR
{"code":-1003,"msg":"Way too much request weight used; IP banned until 1618451196090. Please use the websocket for live updates to avoid bans."}

quand on interroge directement l'url dans un navigateur on voit d'abord ce message avant d'avoir les vraies valeurs

{"symbol":"BTCEUR","bidPrice":"52651.72000000","bidQty":"0.44124000","askPrice":"52651.73000000","askQty":"0.00022800"}
capture d ecran 594

Avec cette url https://api3.binance.com/api/v3/ticker/price?symbol=BTCUSDT, pas de soucis

function pricePair(url) {
  var reponse = UrlFetchApp.fetch(url);
  var json = reponse.getContentText();
  var data = JSON.parse(json);
  return data.price;  
}

https://docs.google.com/spreadsheets/d/1J9wzJlpQwa-2zopUvGFJDl-8NqYL15NDHTjulX6Hq3I/copy

Grand merci pour votre aide :) Qui m'a bien aidé :)
Puis-je me permettre une autre question, mais qui doit être du pur JavaScript.
Comment puis-je retourner 2 valeurs avec la même requête? Ceci dans le but d'éviter de lancer 2 fois la même requête.
Exemple : dans le json ci dessous je souhaite récupérer la valeur de askPrice et de bidPrice dans 2 cellules différentes.

{
symbol: "BTCEUR",
bidPrice: "53076.65000000",
bidQty: "0.00028200",
askPrice: "53085.99000000",
askQty: "0.08022700"
}

Merci par avance :)

Il faut retourner un tableau

avec ceci

{"symbol":"BTCEUR","bidPrice":"53076.65000000","bidQty":"0.00028200","askPrice":"53085.99000000","askQty":"0.08022700"}

et ce code

function infos(txt) {
  var data = JSON.parse(txt);
  var resultat=[]
  resultat.push(data.askPrice)
  resultat.push(data.bidPrice)
  return resultat;  
}
image

Merci pour votre réponse :) C'est très sympa :)
Question : le fait de mettre un appel à la fonction dans 2 cellules ne génère-t-il pas 2 requêtes? J'en ai l'impression...

L'idéal aurait été de n'avoir qu'une seule fonction dans une cellule et faire en sorte que la fonction injecte d'elle même les valeurs dans des cellules en position relative par rapport à la cellule ayant appelé la fonction? Je pense que c'est réalisable, mais je n'ai pas encore assez de connaissance pour le réaliser. Qu'en pesnez-vous? Merci :)

justement, dans l'exemple donné ci-dessus il n'y a qu'une seule formule (dans la seule cellule D2) et qu'un seul appel pour 2 résultats (cellules D2 et D3), puisque j'ai créé un résultat en array

var resultat=[]

Merci de faire un retour

et si tout est ok, n'oublie pas de clore le fil de discussion en cliquant sur

Rechercher des sujets similaires à "recuperation donnees json google sheet"