将收到的信息解析为列/行

问题描述 投票:0回答:1

我有一个脚本来从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]);
  }
}

我收到的信息看起来像“标题”:“价值”。我需要将所有“标题”值作为列标题,然后将值作为行。我不知道从哪里开始。

javascript google-apps-script google-sheets
1个回答
1
投票

这个修改怎么样?

Modification points :

  • 通过分离“标题”和“值”来检索每个数据。
  • 创建一个数组,用于将数据导入Spreadsheet并使用setValues()导入它。

Modified script :

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);
}

Reference :

如果我误解了你的问题,请告诉我。我想修改它。

编辑1:

为了从out[0]的对象中检索密钥,我使用了for (var i in out[0]) {。请参阅以下示例。

Sample 1 :

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]) {可以检索key1key2的密钥。使用检索到的密钥,value1可以检索value2sample[0][i]

另一方面,请参阅下一个示例脚本。

Sample 2 :

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循环检索键和值。请使用下一个示例脚本。

Sample 3 :

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()可以检索来自对象的键。使用它,可以检索键和值。

Reference :

编辑2:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.