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