Как оценить значение ISO 8601 в массиве скриптов Google Apps - PullRequest
0 голосов
/ 08 января 2019

Я использую Google Sheets для компиляции данных из API MailChimp. В частности, я извлекаю массив списков MailChimp, который затем должен быть отфильтрован до списков со значением last_sub_date (поле даты), превышающим определенную пользователем дату. last_sub_date отформатирован в ISO 8601 (гггг-мм-ддчч: мм: сс + смещение, например, 2019-01-07T20: 29: 21 + 00: 00).

До сих пор моим решением было добавить new Date(lists[i]["stats"]["last_sub_date"]) в массив как средство преобразования в другой формат даты, а затем использовать другую функцию для ее фильтрации. Но, похоже, вы сможете применить фильтр там, где я делаю эту оценку if (lists[i]["last_sub_date"] != 0) {. К сожалению, я не могу понять, как это сделать в массиве. .getValue(), по-моему, конвертирует его в неузнаваемое число, которое затем не проходит все оценки.

try {
    // call the Mailchimp API
    var response = UrlFetchApp.fetch(root+endpoint, params);
    var data = response.getContentText();
    var json = JSON.parse(data);

    // get just campaign data
    var lists = json['lists'];

    // blank array to hold the campaign data for Sheet
    var listData = [];

    // Add the campaign data to the array
    for (var i = 0; i < lists.length; i++) {

      // put the list data into a double array for Google Sheets
      if (lists[i]["last_sub_date"] != 0) {
        listData.push([
          lists[i]["id"],
          lists[i]["stats"]["last_sub_date"],
          new Date(lists[i]["stats"]["last_sub_date"])

        ]);
      }
      else {
        listData.push([
          lists[i]["id"], 
          "N/a",
          "N/a"
        ]);
      }
    }

    // Log the listData array
    Logger.log(listData);

    // select the list output sheet
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Lists');

    // calculate the number of rows and columns needed
    var numRows = listData.length;
    var numCols = listData[0].length;

    // output the numbers to the sheet
    sheet.getRange(1,1,numRows,numCols).setValues(listData);


}

catch (error) {
    // deal with any errors
    Logger.log(error);
};
}

Есть ли способ отфильтровать массив по last_sub_date перед его выводом?

...