2
votes

Analyse JSON dans Google Sheets

Je travaille avec JSON pour la première fois, alors excusez mon manque de connaissances.

J'essaie d'utiliser un fichier JSON pour remplir des données dans une feuille Google. Je ne connais tout simplement pas la bonne syntaxe. Comment puis-je formater une fonction JSON pour accéder correctement aux données et arrêter de renvoyer une erreur?

J'essaye d'extraire des données d'ici:

https://eddb.io/archive/v6/bodies_recently.jsonl

dans un fichier Google Sheets.

J'ai chargé le script ImportJSON et je l'ai testé avec un très petit fichier JSON ( http://date.jsontest.com/ ) et cela fonctionne comme annoncé, en utilisant cette fonction:

name  id  type_name  rotational_period, etc. 

Cependant, lorsque j'essaye d'utiliser le même fonction avec le JSON d'eddb.io ci-dessus, je ne peux pas le faire fonctionner.

Ce que je voudrais faire est de tirer le "nom" dans A1 puis quelques-uns des attributs dans les colonnes, comme ça:

=ImportJSON("http://date.jsontest.com", "/date")

Voici un lien vers mes tests: https://docs.heogleets.com/dsprer 1gCKpLcf-ytbPNcuQIIzxp1RMy7N5K8pD02hCLnL27qQ / edit? Usp = partage


2 commentaires

Je suppose que le deuxième json contient des listes et ne peut pas être converti en feuille


Vous faites référence à github.com/bradjasper/ImportJSON/blob/master/ImportJSON. gs


3 Réponses :


0
votes

Je ne suis pas avec mon ordinateur portable, mais je vois que vous obtenez l'erreur SyntaxError: Fin prévue du flux à char 2028 (ligne 132) .

Je pense que les données que vous avez reçues de l'URL sont trop longues.


2 commentaires

Merci. Le json peut également être mal formé. J'ai essayé de mettre le fichier dans ceci: jsoneditoronline.org et il renvoie des erreurs.


La charge utile des données est au format JSON Lines, qui est distinct du JSON pur.



0
votes

vous pouvez utiliser =IMPORTDATA(E1) et obtenir le morceau entier en feuilles, puis REGEXEXTRACT tout pièces dont vous avez besoin

 0


1 commentaires

ouais, faute de frappe, sry ... corrigé



3
votes

Et cette solution de contournement?

Raison du problème:

Quand j'ai vu l'URL de https://eddb.io/archive/v6/bodies_recently.jsonl , J'ai remarqué que l'extension du fichier est jsonl . Ainsi, lorsque j'ai vérifié les valeurs extraites de https://eddb.io/archive/v6/bodies_recently.jsonl , il a été constaté que les valeurs étaient des lignes JSON. Cela a déjà été mentionné dans le commentaire de Dimu Designs . Je pourrais également confirmer que le document officiel indique que body_recently.jsonl est JSON délimité par des lignes.

Solution de contournement:

Malheureusement, ImportJSON ne peut pas analyser directement les valeurs de Lignes JSON. Il est donc nécessaire de modifier le script comme solution de contournement. Dans votre feuille de calcul partagée, le script ImportJSON est placé en tant que script lié au conteneur. Dans cette modification, j'ai modifié le script. Veuillez modifier comme suit.

De:

La fonction suivante est visible sur la ligne 130 - 135 dans votre éditeur de script.

function ImportJSONAdvanced(url, query, options, includeFunc, transformFunc) {
  var jsondata = UrlFetchApp.fetch(url);
  var object = jsondata.getContentText().match(/{[\w\s\S].+}/g).map(function(e) {return JSON.parse(e)}); // Modified

  return parseJSONObject_(object, query, options, includeFunc, transformFunc);
}
  • Bien que ce script modifié fonctionne pour les valeurs de https://eddb.io/archive/v6/bodies_recently.jsonl , je ne suis pas sûr que ce script modifié fonctionne pour toutes les valeurs de lignes JSON . Je m'en excuse.

Références :

Si j'ai mal compris votre question et que ce n'est pas le résultat souhaité, je m'en excuse.


0 commentaires