Как разбить вложенные массивы в JSON в таблицу в Google Sheets (используя Javascript?) - PullRequest
0 голосов
/ 28 сентября 2018

Я наконец-то подключился через OAuth2, чтобы получить JSON отчета о производительности (из общих ресурсов), и мне интересно, как я могу загрузить этот объект в Google Sheets, чтобы он был в матричном формате?

{
    "id": "ID-23035",
    "total_gain": 11795.72,
    "holdings": 
     [
        {
            "symbol": "APX",
            "total_gain": 11525.72,
        },
        {
            "symbol": "MP1",
            "total_gain": 270,
        }
    ]
}

Весь JSON хранится в объекте report .

Я знаю, как извлечь 'id' и 'total gain' из первых двух строк, используя:

  var id= report_data.id
  var total_gain = report_data.total_gain

Однако я бы хотел взять компонент хранения, то есть

  var holdings = report_data.holdings

, а затем импортировать его в Google Sheets в виде таблицы стилей матрицы - чтобы он выглядел следующим образом:

|-----symbol-----|----total gain-----|

|------APX-------|-----11525.72------|

|------MP1-------|--------270--------|

Существует ли какой-то код / ​​функция / скрипт, который может пройти по циклу и создать эту матрицу / таблицу?Я предполагаю, что Google App Script использует JavaScript?

Ответы [ 4 ]

0 голосов
/ 03 октября 2018

(Отправлено решение от имени автора вопроса) .

Это полученный код, который я использовал.Обратите внимание, что в итоге я возвратил 3 поля, поэтому colNumber изменилось с 2 на 3.

  var arr2D = holdings.map(function(e){
          return [e.symbol,e.name, e.total_gain]});
  var range = SpreadsheetApp.getActiveSheet().getRange(8,1,arr2D.length,3)       
  range.setValues(arr2D);    
0 голосов
/ 28 сентября 2018

Вы можете установить заголовки в листе Google с символом имени и total_gain, затем создать пары ключей данных с символом с их значением total_gain, теперь вы можете напрямую вставить данные в лист.

var data = {
    "id": "ID-23035",
    "total_gain": 11795.72,
    "holdings": 
     [
        {
            "symbol": "APX",
            "total_gain": 11525.72,
        },
        {
            "symbol": "MP1",
            "total_gain": 270,
        }
    ]
}  

var formatdata =[];
    data.holdings.forEach(function(val,index){  
      formatdata[val.symbol] = val.total_gain; 
    });
    console.log(formatdata)
0 голосов
/ 28 сентября 2018

data = {
    "id": "ID-23035",
    "total_gain": 11795.72,
    "holdings": 
     [
        {
            "symbol": "APX",
            "total_gain": 11525.72,
        },
        {
            "symbol": "MP1",
            "total_gain": 270,
        }
    ]
}

let TwoDArray =  data.holdings.map(({symbol, total_gain})=> [symbol, total_gain])
console.log(TwoDArray)
0 голосов
/ 28 сентября 2018

Вы можете использовать простой цикл for для преобразования его в 2-мерный массив или Array.map

var arr2D = holdings.map(function(e){
          return [e.symbol,e.total_gain]});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...