json - 如何使用嵌套 JSON 对象从 API 响应导入 Google 表格
问题描述
我正在尝试从 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”日期对象获得了我想要的正确格式。 在此处输入图像描述
但是,当我尝试通过按日期添加行来获取所有日期对象键时,例如没有日期字段参数,=ImportJSONBasicAuth(" https://api.appfigures.com/v2/sales/dates/-7/0/?client_key =3120ef28b3dc4967ad602e81411a89d2 ","my_username","my_password"),
它通过在 Google 表格中添加列来显示所有对象字段: 在此处输入图像描述
我希望通过在 Google 表格中添加行来所有日期对象字段。 由于我不是脚本编写者,因此我不知道更多需要在哪里更新 script 脚本编辑器。任何人都可以通过按特定日期添加行来帮助我显示所有对象日期?有什么建议或需要在脚本编辑器中修改什么?提前致谢。
解决方案
这是你要找的吗?
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);
}
推荐阅读
- javascript - 进度条的多个顺序递归javascript函数
- c# - HTML AgilityPack 注释查找标题
- youtube - YouTube Data API - 如何提取视频和频道信息?
- yaml - 我可以删除响应架构表吗?只保留示例值
- angular - Angular 6子路由不起作用
- c# - VS 2010 C# 文件没有错误,但是当我调试时说它找不到神秘文件
- java - MySQL 语法错误 Java 表创建
- amazon-web-services - 用于实验的不可靠云
- python - Sklearn MLP 分类器隐藏层优化 (RandomizedSearchCV)
- css - bs4可以解析标签吗