【问题标题】:How to Import into Google Sheet from API response with nested JSON objects如何使用嵌套的 JSON 对象从 API 响应导入 Google 表格
【发布时间】:2020-11-17 18:19:26
【问题描述】:

我正在尝试从 API 数据导入 Google 电子表格。

API 响应代码如下:

{
  "2020-05-05": {
"downloads": 43,
"re_downloads": 8,
"uninstalls": 18,
"updates": 192,
"returns": 0,
"net_downloads": 43,
"date": "2020-05-05"
  },
  "2020-05-06": {
"downloads": 45,
"re_downloads": 7,
"uninstalls": 0,
"updates": 196,
"returns": 0,
"net_downloads": 45,
"date": "2020-05-06"
  },
}

我正在使用这个ImportJSON.gs 脚本

我的问题是,当我尝试使用“2020-05-05”的查询参数对象键调用时,例如: =ImportJSONBasicAuth("https://api.appfigures.com/v2/sales/dates/-7/0/?client_key=3120ef28b3dc4967ad602e81411a89d2","my_username","my_password","/2020-05-05")

我在 Google 电子表格中为“2020-05-05”日期对象找到了我想要的正确格式。 enter image description here

但是,当我尝试通过按日期添加行来获取所有日期对象键时,例如没有日期字段参数, =ImportJSONBasicAuth("https://api.appfigures.com/v2/sales/dates/-7/0/?client_key=3120ef28b3dc4967ad602e81411a89d2","my_username","my_password"),

它通过在 Google 表格中添加列来显示所有对象字段: enter image description here

我想要通过在 Google 表格中添加行来获得所有日期对象字段。 由于我不是脚本编写者,因此我不知道更多需要在哪里更新 script 脚本编辑器。 任何人都可以通过按特定日期添加行来帮助我显示所有对象日期? 有什么建议或需要在脚本编辑器中修改什么? 提前致谢。

【问题讨论】:

    标签: json google-apps-script google-sheets


    【解决方案1】:

    这是你要找的吗?

    function myFunction() {
      const js='{"2020-05-05": {"downloads": 43,"re_downloads": 8,"uninstalls": 18,"updates": 192,"returns": 0,"net_downloads": 43,"date": "2020-05-05"  },  "2020-05-06": {"downloads": 45,"re_downloads": 7,"uninstalls": 0,"updates": 196,"returns": 0,"net_downloads": 45,"date": "2020-05-06"  }}';
      const data=JSON.parse(js);
      const sh=SpreadsheetApp.getActiveSheet();
      var oA=Object.keys(data);
      var vA=[];
      //var html="";
      oA.forEach(function(key){
        var kA=Object.keys(data[key]);
        var nA=new Array(kA.length-1);
        vA.push([key].concat(nA));
        vA.push(kA);
        //html+=Utilities.formatString('<br /><strong>%s</strong>',key);
        var row=[];
        kA.forEach(function(e){
          //html+=Utilities.formatString('<br />data[%s][%s]= %s',key,e,data[key][e]);
          row.push(data[key][e]);
        });
        vA.push(row);
        //html+='<hr>';
      });
      //SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), "Test");
      sh.clear();
      sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
    }
    

    这可能是一种更标准的方法。该功能进行了一些调整。

    function myFunction() {
      const js='{"2020-05-05": {"downloads": 43,"re_downloads": 8,"uninstalls": 18,"updates": 192,"returns": 0,"net_downloads": 43,"date": "2020-05-05"  },  "2020-05-06": {"downloads": 45,"re_downloads": 7,"uninstalls": 0,"updates": 196,"returns": 0,"net_downloads": 45,"date": "2020-05-06"  }}';
      const data=JSON.parse(js);
      const sh=SpreadsheetApp.getActiveSheet();
      var oA=Object.keys(data);
      var vA=[];
      //var html="";
      oA.forEach(function(key,i){
        var kA=Object.keys(data[key]);
        var nA=new Array(kA.length-1);
        //vA.push([key].concat(nA));
        if(i==0)vA.push(kA);
        //html+=Utilities.formatString('<br /><strong>%s</strong>',key);
        var row=[];
        kA.forEach(function(e){
          //html+=Utilities.formatString('<br />data[%s][%s]= %s',key,e,data[key][e]);
          row.push(data[key][e]);
        });
        vA.push(row);
        //html+='<hr>';
      });
      //SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), "Test")
      sh.clear();
      sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多