0

我有以下脚本从 Poloniex JSON 输出中提取键,但没有将与键对应的实际数据放入实际工作表中……它只是将键作为标题放在工作表的顶部。

我是 API 和 GAS 以及一般编码的新手,所以我确信我遗漏了一些非常明显的东西,如果你能指出什么,我将不胜感激。

提前致谢

function Bitcoin_fromPolo_toCSV() {
  //Link the script with a spreasdsheet using the identifier found in the spreadsheet url
  var ss = SpreadsheetApp.openById('1cubxxxxxxxxxxxxjDqM');
  var APIPullSheet = ss.getSheetByName("APIPull");


    // Clear Columns A,B,C,D
  APIPullSheet.getRange('A2:D19999').clearContent();


  var url = "https://poloniex.com/public?command=returnChartData&currencyPair=BTC_ETH&start=1502344800&end=9999999999&period=14400";

  //Fetch pulls data from URL

  var responseAPI = UrlFetchApp.fetch(url);


  //Parse that JSON
  var parcedData = JSON.parse(responseAPI.getContentText());


  //Break that Parsed data into fields
  //Define the 'stats' array, and populate it from the parced data pulled
  // for loop iterates over each 'key' in 'parcedData' pushing that data to 'stats'


  var stats = [];
  stats.push(['date','high', 'low', 'open', 'close', 'volume', 'quoteVolume', 'weightedAverage']);


  for(var key in parcedData.stats)
  {
    stats.push(parcedData.stats[key]); 
  }


  statsRange = APIPullSheet.getRange(1, 1, stats.length, 8);
  statsRange.setValues(stats);

}

4

1 回答 1

1

下面的修改呢?

修改点:

来自 URL 的 JSON 数据如下。

[
  {
    "date": 1502352000,
    "high": 0.0899,
    "low": 0.08754124,
    "open": 0.08795499,
    "close": 0.08988724,
    "volume": 1390.47552953,
    "quoteVolume": 15727.49124739,
    "weightedAverage": 0.08841051
  },
.
.

]

parcedData没有stats作为关键。

创建数据的流程:

  1. OuterforEach()从 中检索一个元素parcedData
  2. Inner从 中forEach()检索每个键,并从使用该键stats[0]的元素中检索数据。parcedData
  3. 将检索到的数据导入temp为一维数组。
  4. temp导入的是stats二维数组。在此之后,temp被初始化。

反映这一点的脚本如下。

修改后的脚本:

function Bitcoin_fromPolo_toCSV() {
  var ss = SpreadsheetApp.openById('1cubxxxxxxxxxxxxjDqM');
  var APIPullSheet = ss.getSheetByName("APIPull");
  APIPullSheet.getRange('A2:D19999').clearContent();
  var url = "https://poloniex.com/public?command=returnChartData&currencyPair=BTC_ETH&start=1502344800&end=9999999999&period=14400";
  var responseAPI = UrlFetchApp.fetch(url);
  var parcedData = JSON.parse(responseAPI.getContentText());
  var stats = [];
  stats.push(['date','high', 'low', 'open', 'close', 'volume', 'quoteVolume', 'weightedAverage']);

  parcedData.forEach(function(e1){
    var temp = [];
    stats[0].forEach(function(e2){
      temp.push(e1[e2])
    });
    stats.push(temp); 
  });

  statsRange = APIPullSheet.getRange(1, 1, stats.length, 8);
  statsRange.setValues(stats);
}

结果 :

在此处输入图像描述

如果我误解了你的问题,我很抱歉。

于 2017-09-14T06:45:06.713 回答