从外部数据到Google工作表的API连接: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"

我正在尝试将一个营销工具连接到google sheets,然后实时使用这些数据。 有关API连接的信息:

我正在尝试将它连接起来,并通过以下脚本获得结果(然后我将确定如何在我的工作表中使用JSON,但这不是现在的问题)

正如您在链接上看到的,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"
  },
}
运行时,我得到错误“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]};