我有一个脚本来从Binance获取所有数据并推出已解析的信息。这是我的脚本:
function myFunction() {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getActiveSheet();
var data = UrlFetchApp.fetch("https://www.binance.com/assetWithdraw/getAllAsset.html");
var first = JSON.parse(data)[0];
var out = JSON.stringify(first).split(",");
for(var i =0;i<out.length;i++){
Logger.log(i);
Logger.log(out[i]);
ss.getRange(1,i+1).setValue(out[i]);
}
}
我收到的信息看起来像“标题”:“价值”。我需要将所有“标题”值作为列标题,然后将值作为行。我不知道从哪里开始。
这个修改怎么样?
setValues()
导入它。function myFunction() {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getActiveSheet();
var data = UrlFetchApp.fetch("https://www.binance.com/assetWithdraw/getAllAsset.html");
// Modified
var out = JSON.parse(data.getContentText());
var title = [];
for (var i in out[0]) {
title.push(i);
}
var res = [];
res.push(title);
for (var i in out) {
var values = [];
for (var j in out[i]) {
values.push(out[i][j]);
}
res.push(values);
}
ss.getRange(ss.getLastRow() + 1, 1, res.length, res[0].length).setValues(res);
}
如果我误解了你的问题,请告诉我。我想修改它。
为了从out[0]
的对象中检索密钥,我使用了for (var i in out[0]) {
。请参阅以下示例。
var sample = [{key1: "value1", key2: "value2"}];
for (var i in sample[0]) {
Logger.log("%s, %s", i, sample[0][i])
}
Result
key1, value1
key2, value2
在这个脚本中,sample[0]
是{key1: "value1", key2: "value2"}
的一个对象。 for (var i in sample[0]) {
可以检索key1
和key2
的密钥。使用检索到的密钥,value1
可以检索value2
和sample[0][i]
。
另一方面,请参阅下一个示例脚本。
var sample = [{key1: "value1", key2: "value2"}];
for (var i = 0; i < sample[0].length; i++) {
Logger.log("%s, %s", i, sample[0][i])
}
在这个脚本中,sample[0].length
成为undefined
。因为object.length
无法检索长度。所以这个for循环不起作用。
如果要像示例2那样使用for循环检索键和值。请使用下一个示例脚本。
var sample = [{key1: "value1", key2: "value2"}];
var keys = Object.keys(sample[0]);
for (var i=0; i<keys.length; i++) {
Logger.log("%s, %s", keys[i], sample[0][keys[i]])
}
Result
key1, value1
key2, value2
在此脚本中,Object.keys()
可以检索来自对象的键。使用它,可以检索键和值。
function myFunction() {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getActiveSheet();
var data = UrlFetchApp.fetch("https://www.binance.com/assetWithdraw/getAllAsset.html");
// Modified
var out = JSON.parse(data.getContentText());
var title = [];
for (var i in out[0]) {
if (i == "assetCode" || i == "transactionFee") {
title.push(i);
}
}
var res = [];
res.push(title);
for (var i in out) {
var values = [];
for (var j in out[i]) {
if (j == "assetCode" || j == "transactionFee") {
values.push(out[i][j]);
}
}
res.push(values);
}
ss.getRange(ss.getLastRow() + 1, 1, res.length, res[0].length).setValues(res);
}