【发布时间】:2018-06-01 13:54:20
【问题描述】:
我正在尝试解析来自 Binance API 的 JSON 文件,因此我可以在 google spreadsheets 上创建一个 candlestick chart。
但我似乎无法弄清楚如何实现这一点...... 这是我迄今为止尝试过的:
function myJSON(){
url = "https://api.kraken.com/0/public/OHLC?pair=XXBTZEUR&since=0&interval=1"
var ss = SpreadsheetApp.getActiveSpreadsheet(),
coinsheet = ss.getSheetByName('Sheet1')
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var rawdata = JSON.parse(json);
var data = JSON.stringify(rawdata.result.XXBTZEUR)
data = JSON.parse(data)
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
var mdata = new Array();var obj = {};
var utcSeconds = data[i][0];
var mdate = new Date(0); // The 0 there is the key, which sets the date to the epoch
mdate.setUTCSeconds(utcSeconds);
open = parseFloat(data[i][1])
high = parseFloat(data[i][2])
low = parseFloat(data[i][3])
close = parseFloat(data[i][4])
obj['date'] = mdate
obj['open'] = open
obj['high'] = high
obj['low'] = low
obj['close'] = close
mdata.push(obj);
Logger.log(mdata);
coinsheet.appendRow(mdata);
}
}
}
在运行Logger gives this output 函数时会产生以下错误:
此操作会将工作簿中的单元格数量增加到超过 2000000 个单元格的限制
这怎么可能?只有 720 条记录,为什么 mdata 变量不会在每个循环中被覆盖?这不应该自动创建一个包含列名和数据的表吗?完全迷失在这里。任何帮助都将不胜感激。
【问题讨论】:
-
如果你登录
coinsheet.getLastRow(),你会得到什么? -
嗨@LioraHaydont 感谢您提出这个问题。它产生“0.0”
-
试试
coinsheet.appendRow(mdata[j]); -
不。同样的错误。而
mdata[j]没有用。尝试使用data[j] -
带有变量
j的 for 循环正在为结果中的每个项目执行 8 次代码。由于您不会在循环中以外的任何地方使用变量j,因此您似乎可以删除此循环。这很可能会解决单元格限制问题。
标签: javascript arrays json google-apps-script google-sheets