Сортировать JSON массив по отметке времени, извлечь пары ключ / значение и записать в Google лист - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь взять информацию из массива JSON в Google Sheet, взять последнюю хронологическую запись в массиве и скопировать ее в два соседних столбца

Данные, которые мне нужны, находятся в столбце L моего листа (начиная со строки 2) и в формате:

[{"id": "XX:123456", "timestamp": "2020-01-27T19:25:51.303"}, {"id": "XX:654321", "timestamp": "2020-01-27T19:40:37.06"}]
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("data");
var dataRange = sheet.getDataRange();
var lastRow = dataRange.getLastRow();

function parseData() {

   let parseRange = sheet.getRange(1+1,11,lastRow-1,1); //col L
   let values = parseRange.getValues();
   let out = values.map(([row])=>{
      let {id, timestamp} = JSON.parse(row).pop();
      return [id, timestamp];
   });
   sheet.getRange(1+1, 12, lastRow-1, 2).setValues(out);
}

Это извлечение данных из массива, однако, поскольку сам JSON не отсортирован, я должен убедиться в этом принимает идентификатор и метку времени для объекта с последней меткой времени в хронологическом порядке

1 Ответ

1 голос
/ 13 февраля 2020

Используйте .reduce, чтобы найти последнюю версию:

let {id, timestamp} = JSON.parse(row).reduce(
    (a,c) => a.timestamp > c.timestamp ? a : c //lexigographic enough for iso8601
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...