从外部数据到Google工作表的API连接:JSON解析错误
我正在尝试将一个营销工具连接到google sheets,然后实时使用这些数据。 有关API连接的信息: 我正在尝试将它连接起来,并通过以下脚本获得结果(然后我将确定如何在我的工作表中使用JSON,但这不是现在的问题) 正如您在链接上看到的,JSON如下所示:从外部数据到Google工作表的API连接:JSON解析错误,json,api,google-sheets,script,Json,Api,Google Sheets,Script,我正在尝试将一个营销工具连接到google sheets,然后实时使用这些数据。 有关API连接的信息: 我正在尝试将它连接起来,并通过以下脚本获得结果(然后我将确定如何在我的工作表中使用JSON,但这不是现在的问题) 正如您在链接上看到的,JSON如下所示: { "_id": "tea_aaqam5a3BkY8aje24", "name": "PiedPiper", "userIds"
{
"_id": "tea_aaqam5a3BkY8aje24",
"name": "PiedPiper",
"userIds": ["usr_aawMB5Gd5JJCFYvjp"],
"createdBy": "usr_aawMB5Gd5JJCFYvjp",
"createdAt": "2018-04-30T12:19:42.829Z",
"apiKey": "aa13722b45b9c475cc686231b1af6583",
"billing": {
"quantity": 1,
"ok": true,
"plan": "freetrial"
},
}
运行时,我得到错误“SyntaxError:Unexpected token<在JSON中的位置0”
如果JSON格式不正确,这是否意味着没有办法?因为如果我是从外部来源获得它,我怎么能改变它呢
此外,还有一个脚本可以获取我需要的.csv数据文件。您知道是否可以用脚本将其导出到工作表中吗?在此方面的任何帮助都将不胜感激
谢谢 这里是编写这些json的正确方法,还有一个额外的逗号
{
"_id": "tea_aaqam5a3BkY8aje24",
"name": "PiedPiper",
"userIds": ["usr_aawMB5Gd5JJCFYvjp"],
"createdBy": "usr_aawMB5Gd5JJCFYvjp",
"createdAt": "2018-04-30T12:19:42.829Z",
"apiKey": "aa13722b45b9c475cc686231b1af6583",
"billing": {
"quantity": 1,
"ok": true,
"plan": "freetrial"
}
}
根据您的第二个问题,下面是一个脚本,它将在工作表中为您提供数据 将这些参数放入单元格B2:I2中
/_id /name /createdBy /createdAt /apiKey /billing/quantity /billing/ok /billing/plan
把这个公式放在需要的地方=getDataJSON(url,B2:I2)
url是url或数据
这个脚本在编辑器中
// mike.steelson
let resultat = [];
function getDataJSON(url,xpath){
try{
if (url.match(/http(s)?:\/\/?/g)){var data = JSON.parse(UrlFetchApp.fetch(url).getContentText())}
else{var data = JSON.parse(url)}
var json = eval('data')
if (typeof xpath == 'object'){var liste = xpath.join().split(",")} else {var liste = xpath.split("|")}
if (json.length){json.forEach(function(elem){getData(elem,liste)})} else {getData(json,liste)}
return resultat
}
catch(e) {
return ('Pas de résultat - vérifier l\'url et les paramètres !');
}
}
function getData(elem,liste){
var prov=[]
liste.forEach(function(chemin){
var t=chemin.split('/');
var obj=elem;
for (var i=1;i<t.length;i++){obj=obj.item(t[i])}
if(typeof obj=='object'){prov.push('['+obj+']')}else{prov.push(obj)}
})
resultat.push(prov)
}
Object.prototype.item=function(i){return this[i]};
//迈克·斯蒂尔森
设resultat=[];
函数getDataJSON(url,xpath){
试一试{
if(url.match(/http(s)?:\/\/?/g)){var data=JSON.parse(UrlFetchApp.fetch(url.getContentText())}
else{var data=JSON.parse(url)}
var json=eval(“数据”)
if(typeof xpath=='object'){var liste=xpath.join().split(“,”)else{var liste=xpath.split(“|”)}
if(json.length){json.forEach(function(elem){getData(elem,liste)}}else{getData(json,liste)}
返回结果
}
捕获(e){
return('Pas de résultat-vérifier l'url et les paramètres!');
}
}
函数getData(元素,列表){
变量prov=[]
liste.forEach(函数(chemin){
var t=化学分裂('/');
var obj=元素;
for(var i=1;谢谢!我尝试了它,但在“liste.forEach”函数中出现错误。错误是:ReferenceError:list未定义复制
// mike.steelson
let resultat = [];
function getDataJSON(url,xpath){
try{
if (url.match(/http(s)?:\/\/?/g)){var data = JSON.parse(UrlFetchApp.fetch(url).getContentText())}
else{var data = JSON.parse(url)}
var json = eval('data')
if (typeof xpath == 'object'){var liste = xpath.join().split(",")} else {var liste = xpath.split("|")}
if (json.length){json.forEach(function(elem){getData(elem,liste)})} else {getData(json,liste)}
return resultat
}
catch(e) {
return ('Pas de résultat - vérifier l\'url et les paramètres !');
}
}
function getData(elem,liste){
var prov=[]
liste.forEach(function(chemin){
var t=chemin.split('/');
var obj=elem;
for (var i=1;i<t.length;i++){obj=obj.item(t[i])}
if(typeof obj=='object'){prov.push('['+obj+']')}else{prov.push(obj)}
})
resultat.push(prov)
}
Object.prototype.item=function(i){return this[i]};