JSon

时间:2016-10-09 19:28:09

标签: json api google-apps-script

我正在处理谷歌脚本,可以调用REST API并获取谷歌电子表格中的数据。但是不同的Json对象起作用,我现在使用它不起作用......

起初它给我一个错误,因为范围的坐标或尺寸无效。所以看着 "The coordinates or dimensions of the range are invalid" - Google Apps Script and JSON Data

现在结果是未定义 ..

真的很感激,如果有人可以提供帮助

function pullJSON(k) {

     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sheets = ss.getSheets();
     var sheet = ss.getActiveSheet();

     var url = "********"; // Paste your JSON URL here
     var headers = {
         "Content-Type": "application/json",

     };

     var options = {
         "method": "GET",
         "headers": headers
     };

     var response = UrlFetchApp.fetch(url, options); // get feed
     var dataAll = JSON.parse(response.getContentText()); //
     var dataSet = dataAll;
     Logger.log(dataAll.length);
     Logger.log(k);
     Logger.log(url);

     var rows = [],
         data;
     for (var k = 0; k < Object.keys(dataSet).length; k++) {
         data = [Object.keys(dataSet)[k]];
         Logger.log(data);

         rows.push([data.total1]);} //your JSON entities here

    dataRange = sheet.getRange( 1, 1,rows.length,1); // 3 Denotes total number of entites
    dataRange.setValues(rows);
 }

1 个答案:

答案 0 :(得分:0)

您目前正在做的是在Object.keys()上致电dataSet 这将返回一个字符串数组,例如["status", "data"]

然后分别检索每个键并将它们作为一个元素数组分配给数据,因此数据看起来像 ["status"]["data"] 由于["total1]"是一个字符串数组,因此它没有"total1"属性,只是一个值等于名称的元素。

要获取数据中每个对象的实际总计1值,您可以

dataSet.data.forEach(function(x) {
  rows.push([x.total1]);
});

而不是for循环。