我正在开发一个自动从网站请求信息的Google电子表格,下面是代码。变量'tokens'是一个由大约60个不同的3个字母唯一标识符组成的数组。我遇到的问题是代码无法请求网站上的所有信息。相反,它会在验证部分上(随机)退回,并用“错误!”填充数组。字符串。有时它的行5,然后是10-12,然后是3,然后是3行,然后是多行等等。当我在调试模式下运行它时,一切都好,似乎无法重现问题。
已经尝试过睡觉(100毫秒),但没有任何修复。还查看了API接受的流量(每秒10个请求,每分钟1.200,每天100,000个),这应该不是问题。
运行时间有限,所以我需要它尽可能高效。在我将json请求中的所有值都推送到'tokens'数组后,我认为这是计算能力的问题。有没有办法让脚本等待提交更改所需的时间?
function newGetOrders() {
var starttime = new Date().getTime().toString();
var refreshTime = new Date();
var tokens = retrieveTopBin();
var sheet = SpreadsheetApp.openById('aaafFzbXXRzSi-eXBu9Xh81Ne2r09vM8rLFkA4fY').getSheetByName("Sheet37");
sheet.getRange('A2:OL101').clear();
for (var i=0; i<tokens.length; i++) {
var request = UrlFetchApp.fetch("https://api.binance.com/api/v1/depth?symbol=" + tokens[i][0] + "BTC", {muteHttpExceptions:true});
var json = JSON.parse(request.getContentText());
tokens[i].push(refreshTime);
Utilities.sleep(100);
for (var k in json.bids) {
tokens[i].push(json.bids[k][0]);
tokens[i].push(json.bids[k][1]);
}
for (var k in json.asks) {
tokens[i].push(json.asks[k][0]);
tokens[i].push(json.asks[k][1]);
}
if (tokens[i].length < 402) {
for (var x=tokens[i].length; x<402; x++) {
tokens[i].push("ERROR!");
}
}
}
sheet.getRange(2, 1, tokens.length, 402).setValues(tokens);
}