Сортировка данных в формате JSON по дате Google Apps Script

#json #google-apps-script

#json #google-apps-script

Вопрос:

Я запускаю базовый вызов API, который использует следующий сценарий Google Apps:

 var response = UrlFetchApp.fetch('https://url.com?startDate=2017-09-01amp;endDate=2018-04-01', options);
var dataAll = JSON.parse(response.getContentText());
 

Это дает мне следующие данные JSON

 {
  "kind": "resultTable",
  "columnHeaders": [
    {
      "name": "month",
      "columnType": "DIMENSION",
      "dataType": "STRING"
    },
    {
      "name": "averageViewDuration",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "averageViewPercentage",
      "columnType": "METRIC",
      "dataType": "FLOAT"
    },
    {
      "name": "subscribersGained",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "estimatedMinutesWatched",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "views",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "likes",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "subscribersGained",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "shares",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    }
  ],
  "rows": [
    [
      "2017-11",
      648,
      22.06,
      13,
      47298,
      4376,
      60,
      13,
      72
    ],
    [
      "2017-12",
      641,
      21.83,
      6,
      21284,
      1990,
      13,
      6,
      14
    ],
    [
      "2018-01",
      620,
      21.12,
      5,
      12790,
      1236,
      14,
      5,
      12
    ],
    [
      "2018-02",
      636,
      21.65,
      2,
      11374,
      1072,
      5,
      2,
      12
    ],
    [
      "2018-04",
      604,
      20.58,
      4,
      9760,
      968,
      14,
      4,
      9
    ],
    [
      "2018-03",
      615,
      20.94,
      8,
      8486,
      827,
      7,
      8,
      12
    ]
  ]
}   
 

Хотя строки в основном расположены в порядке даты, есть один или два случая, когда это не так. Как мне отсортировать строки по дате в Google Apps Script, чтобы они начинались с 2017-11 первым и 2018-04 последним?

Комментарии:

1. Строки выглядят как двумерный массив. Вы можете использовать метод сортировки с функцией сортировки, которая использует полный год и месяц-1 вместе с конструктором Date() для создания новой даты (), а затем сравнить значения с помощью методов valueOf или getTime

Ответ №1:

Что-то вроде этого

 function sortRows() {
  var response = UrlFetchApp.fetch(); 
  let data=JSON.parse(response.getContentText());//from what you provided
  data.rows.sort((a,b)=>{
    let A=a[0].split('-');
    let adv=new Date(A[0],A[1],0).valueOf();
    let B=b[0].split('-');
    let bdv=new Date(B[0],B[1],0).valueOf();
    return adv-bdv;
  });
}