Я использую 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
перед его выводом?