这个解决方法怎么样?
问题原因:
当我看到这个网址时https://eddb.io/archive/v6/bodies_recently.jsonl
,我注意到文件的扩展名是jsonl
。所以当我检查从检索到的值时https://eddb.io/archive/v6/bodies_recently.jsonl
,发现这些值是 JSON Lines。这已经被提到过迪木设计的评论。我也可以确认官方文件说bodies_recently.jsonl
是行分隔的 JSON。
解决方法:
不幸的是,ImportJSON 无法直接解析 JSON Lines 的值。因此需要修改脚本作为解决方法。在您的共享电子表格中,ImportJSON 的脚本被放置为容器绑定脚本。在这次修改中,我修改了脚本。请修改如下。
From:
在脚本编辑器的第 130 - 135 行可以看到以下函数。
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:
请将以上函数替换为以下脚本,并保存脚本。那么,请把=ImportJSON("https://eddb.io/archive/v6/bodies_recently.jsonl", "/id")
再次到一个细胞。
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:
- 尽管此修改后的脚本适用于以下值
https://eddb.io/archive/v6/bodies_recently.jsonl
,我不确定这个修改后的脚本是否适用于所有 JSON 行值。我对此表示歉意。
参考:
如果我误解了你的问题并且这不是你想要的结果,我深表歉意。