Parsing JSON in Google Sheets

后端 未结 3 1872
渐次进展
渐次进展 2021-01-15 08:47

I\'m working with JSON for the first time, so please excuse my lack of knowledge.

I\'m trying to use a JSON file to populate data in a Google Sheet. I just don\'t k

3条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-15 09:18

    How about this workaround?

    Reason of issue:

    When I saw the URL of https://eddb.io/archive/v6/bodies_recently.jsonl, I noticed that the extension of the file is jsonl. So when I checked the values retrieved from https://eddb.io/archive/v6/bodies_recently.jsonl, it was found that the values were JSON Lines. This has already been mentioned by Dimu Designs's comment. Also I could confirm that the official document says bodies_recently.jsonl is Line-delimited JSON.

    Workaround:

    Unfortunately, ImportJSON cannot directly parse the values of JSON Lines. So it is required to modify the script as a workaround. In your shared Spreadsheet, the script of ImportJSON is put as the container-bound script. In this modification, I modified the script. Please modify as follows.

    From:

    The following function can be seen at the line of 130 - 135 in your script editor.

    function ImportJSONAdvanced(url, query, options, includeFunc, transformFunc) {
      var jsondata = UrlFetchApp.fetch(url);
      var object   = JSON.parse(jsondata.getContentText());
    
      return parseJSONObject_(object, query, options, includeFunc, transformFunc);
    }
    

    To:

    Please replace the above function to the following script, and save the script. Then, please put =ImportJSON("https://eddb.io/archive/v6/bodies_recently.jsonl", "/id") to a cell, again.

    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);
    }
    

    Result:

    Note:

    • Although this modified script works for the values from https://eddb.io/archive/v6/bodies_recently.jsonl, I'm not sure whether this modified script works for all JSON lines values. I apologize for this.

    References:

    • eddb.io/api
    • JSON Lines

    If I misunderstood your question and this was not the result you want, I apologize.

提交回复
热议问题