Поиск самого нового файла в определенной папке на диске Google - PullRequest
0 голосов
/ 13 мая 2019

Я довольно новичок в программировании на javascript и пытаюсь написать скрипт, который находит последний CSV-файл в папке на Google Диске и копирует содержимое на существующий лист под последней строкой данных.

Я получаю сообщение об ошибке:

TypeError: Невозможно найти функцию hasNext в объекте. Пт 10 мая 2019 16:42:55 GMT + 1000 (AEST). (строка 11, файл «Код»)

Любая помощь будет высоко ценится!

КОД:

   function getCSV() {
var fSource = DriveApp.getFolderById('1mwVqOXikSBh4mcr4iowzJTa4ZvNnzO12'); //       reports_folder_id = id of folder where csv reports are saved
var fi = fSource.getFilesByType('text/csv');// latest       report file

  let lastUpdatedFile = null;
while(fi.hasNext()){
 if(!lastUpdatedFile){ //Checks if we didn't assign anything to lastUpdatedFile
   lastUpdatedFile = fi.next();
 }else{
  var currentFile = fi.next();
  //lastUpdatedFile is older than the current file
  //set lastUpdatedFile to the current file
  if(lastUpdatedFile.getLastUpdated() < currentFile.getLastUpdated()){
    lastUpdatedFile = currentFile;
  }
 }
}
var ss    =SpreadsheetApp.openById('1W2-83TlLONomkcKtaH6f0Zcm4G9jJ1DdWn9BXBhKo2s'); //      data_sheet_id = id of spreadsheet that holds the data to be updated with new      report data
var sd = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSheet();
var target = new Array()
var sSheet = SpreadsheetApp.getActiveSpreadsheet();
sheet = SpreadsheetApp.setActiveSheet(sSheet.getSheets()[0]);

if ( fi.hasNext()) {
var file = fi.next();
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());

var sheet = ss.getSheets()[0];
var lastrow = s.getLastRow();
s.getRange(lastrow + 1, 1, csvData.length, csvData[0].length).setValues(csvData);
s.getRange(+1, 1, csvData.length, csvData[5].length).setValues(csvData);
}
}

1 Ответ

0 голосов
/ 13 мая 2019

Согласно документации , Folder.getLastUpdated() возвращает объект даты, когда папка последний раз обновлялась.Таким образом, для перебора файлов в папке вы можете использовать var fi = fSource.getFiles() для всех файлов в этой папке.

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

var lastUpdatedFile = null;
while(fi.hasNext()){
 if(!lastUpdatedFile){ //Checks if we didn't assign anything to lastUpdatedFile
   lastUpdatedFile = fi.next();
 }else{
  var currentFile = fi.next();
  //lastUpdatedFile is older than the current file
  //set lastUpdatedFile to the current file
  if(lastUpdatedFile.getLastUpdated() < currentFile.getLastUpdated()){
    lastUpdatedFile = currentFile;
  }
 }
}

СейчасlastUpdatedFile содержит самый новый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...