1) приведенный ниже код извлекает данные из нескольких листов в папке и объединяет все даты в одном листе.
2) на этой вкладке комбинированных листов с функцией максимальной даты.
var maxDate = SS.getRange("MaxDate!A1").getValue();
3) листы в папке имеют формат даты и времени, подобный этому 08-09-2019 10:59 AM
.
4) я сделал сценарий зацикливания на всех листах и сравнил дату на этих листах с функцией максимальной даты в комбинированном листе, и если дата превышает максимальную дату, извлекает эти данные, поэтому в основном он выбирает самые последние данные.
5) проблема в том, что когда я делаю код ниже, он читает эту дату 08-09-2019 10:59 AM
в виде строки и возвращает 1970-00-01
, я пытался поместить переменную даты в new Date();
, чтобы преобразовать ее в дату, но явсе еще есть та же проблема, и когда я удаляю new Date();
, это выдает мне ошибку can't find method formatDate(string, string, string)
.
Поэтому мне нужна помощь, чтобы преобразовать эту переменную даты fileDate
в фактическую дату
fileHeaders = fileSheet.getRange(1, 1, 1, fileSheet.getLastColumn()).getValues();
dateCol = fileHeaders[0].indexOf('Creation date and time')+1;
fileDate = new Date(fileSheet.getRange(2,dateCol,1,1).getValue());
dateFormat = Utilities.formatDate(fileDate, "GMT+2", "yyyy-mm-dd");
function combineData() {
var folder = DriveApp.getFolderById("17eFdVXdVE3sxemcC_qO0QfY71zKU4YLh");
var filesIterator = folder.getFiles();
var SS = SpreadsheetApp.getActiveSpreadsheet();
var maxDate = SS.getRange("MaxDate!A1").getValue();
var rDS = SS.getSheetByName('Raw Data');
var oriColHeaders = rDS.getRange(1, 1, 1, SS.getSheetByName('Raw Data').getMaxColumns()).getValues();
var file;
var filetype;
var fileDate;
var dateFormat;
var ssID;
var combinedData = [];
var data;
var columnsHeaders;
var colindex;
while(filesIterator.hasNext()){
file = filesIterator.next();
filetype = file.getMimeType();
var fileSheet = SpreadsheetApp.open(file).getSheets()[0];
var fileHeaders = fileSheet.getRange(1, 1, 1, fileSheet.getLastColumn()).getValues();
var dateCol = fileHeaders[0].indexOf('Creation date and time')+1;
fileDate = new Date(fileSheet.getRange(2,dateCol,1,1).getValue());
dateFormat = Utilities.formatDate(fileDate, "GMT+2", "yyyy-mm-dd");
Logger.log(dateFormat);
if(filetype === "application/vnd.google-apps.spreadsheet" && dateFormat > maxDate) {
ssID = file.getId();
columnsHeaders = SpreadsheetApp.openById(ssID).getSheets()[0].getRange(1, 1, 1, SpreadsheetApp.openById(ssID).getSheets()[0].getMaxColumns()).getValues();
for (var i = columnsHeaders[0].length - 1; i >= 0; i--)
if (oriColHeaders[0].indexOf(columnsHeaders[0][i]) === -1) {
SpreadsheetApp.open(file).getSheets()[0].deleteColumn(i+1);
}
}
data = SpreadsheetApp.openById(ssID).getSheets()[0].getRange("A2:AG" + SpreadsheetApp.openById(ssID).getSheets()[0].getLastRow()).getValues();
combinedData = combinedData.concat(data);
}
var activeWS = SS.getSheetByName("Raw Data");
var activeWSLR = activeWS.getRange("S1:S").getValues().filter(String).length;
if(combinedData.length > 0) {
activeWS.getRange(activeWSLR+1, 1, combinedData.length, combinedData[0].length).setValues(combinedData).sort(19);
}
else {
SpreadsheetApp.getUi().alert('No new files.')
}
}