Binance API,通过代码简单获取价格,不起作用

问题描述

当我将此代码作为 Google Sheets 脚本执行时,我的第一次和后续尝试很少从 Binance 检索数据。有时它会起作用。有人可以帮忙吗?

function BINTickFetch(){
  var rows=[],obj_array=null;
  try {obj_array=JSON.parse(UrlFetchApp.fetch("https://api.binance.com/api/v3/ticker/price").getContentText());} catch (e) {obj_array=null;}
  if (obj_array==null) {
    browser.msgBox("data not received from Binance. Try again"); 
    return false;
  }
  else {
    for (r in obj_array) rows.push([obj_array[r].symbol,parseFloat(obj_array[r].price)]);
    var ss=SpreadsheetApp.getActiveSpreadsheet(),sheet=ss.getSheetByName('Binance24h');ss.getRange("Binance24h!A1").setValue(new Date());
    try {var range=sheet.getRange(2,1,sheet.getLastRow(),2).clearContent();} catch(e) {Logger.log("error");}
    if (rows==null) {browser.msgBox("incomplete symbol data from Binance. Try again"); return false;}
    range=sheet.getRange(2,rows.length,2); range.setValues(rows); 
  }
}

(在某处从互联网上获取代码

解决方法

我不熟悉那个网站,我使用雅虎财经。这将获取 MSFT 的历史定价

function importCSVFromWeb() {
  // Provide the full URL of the CSV file.
  var csvUrl = "https://query1.finance.yahoo.com/v7/finance/download/MSFT?period1=1577806579&period2=1609428979&interval=1d&events=history&includeAdjustedClose=true";
  var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
  var csvData = Utilities.parseCsv(csvContent);

  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
}

Yahoo 在开始和结束期间使用 unix 日期戳

这是将日期转换为 unix 日期戳的一种方法

function getUnixDateStamp(stdDate){
strDate = stdDate.yyyymmdd();
return Date.parse(strDate)/1000
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...