Вывести вывод массива JSON в Google Sheet - PullRequest
2 голосов
/ 08 февраля 2020

Я пытаюсь проанализировать вывод массива JSON в Google Script и распечатать его на листе. Ожидаемый результат в листе:

  • Строка 1: AUD | CNY | GBP | HKD
  • Строка 2: 0,98 | 5,01 | 0,56 | 5,60
  • Строка 3: 0,91 | 8.01 | 0,93 | 2.61

В настоящее время я использую приведенный ниже сценарий, который выводит меня как

  • Строка 1: {AUD = 0,98, HKD = 5,01, GBP = 0,56, CNY = 5.60}
  • Строка 2: {AUD = 0.91, HKD = 8.01, GBP = 0.93, CNY = 2.61}

Может кто-нибудь помочь с тем, что мне здесь не хватает?

    function addObject(){
     var obj = {
        "base": "CAD",
        "date": "2017-05-05",
        "rates": [{
            "AUD": "0.98",
            "CNY": "5.01",
            "GBP": "0.56",
            "HKD": "5.60"
        },
                 {
            "AUD": "0.91",
            "CNY": "8.01",
            "GBP": "0.93",
            "HKD": "2.61"
        }]
    }
    var inputArray = []
    var rates = obj.rates
    for (var j in rates){
      inputArray.push([rates[j]])
    }
    Logger.log(inputArray)
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Sheet1');
    sheet.getRange(sheet.getLastRow()+1, 1,inputArray.length,inputArray[0].length).setValues(inputArray)

    }

Ответы [ 2 ]

3 голосов
/ 08 февраля 2020

Вам необходимо преобразовать массив в двухмерный:

let obj = {
    "base": "CAD",
    "date": "2017-05-05",
    "rates": [{
        "AUD": "0.98",
        "CNY": "5.01",
        "GBP": "0.56",
        "HKD": "5.60"
    },
             {
        "AUD": "0.91",
        "CNY": "8.01",
        "GBP": "0.93",
        "HKD": "2.61"
    }]
}

let headers = Object.keys(obj.rates[0]);
let out = obj.rates.map(({AUD,CNY,GBP,HKD})=> [AUD,CNY,GBP,HKD]);
out.unshift(headers);
console.log(out);//setvalues this array: out
1 голос
/ 08 февраля 2020

Предварительно: V8

function doit() {
  var obj = {
    "base": "CAD",
    "date": "2017-05-05",
    "rates": [{
      "AUD": "0.98",
      "CNY": "5.01",
      "GBP": "0.56",
      "HKD": "5.60"
    },
              {
                "AUD": "0.91",
                "CNY": "8.01",
                "GBP": "0.93",
                "HKD": "2.61"
              }]
  }

  var headers=Object.keys(obj.rates[0]);
  var out=obj.rates.map(function({AUD:AUD,CNY:CNY,GBP:GBP,HKD:HKD}){ return [AUD,CNY,GBP,HKD]});
  out.unshift(headers);
  //Logger.log(out);
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  //sh.clearContents();
  sh.getRange(sh.getLastRow()+1,1,out.length,out[0].length).setValues(out)
}                          
...