G-скрипт: список и фильтр файлов G-Drive из переменных, хранящихся в G-листе - PullRequest
1 голос
/ 04 октября 2019

Пытаюсь перечислить файлы с G-Drive с фильтрами. Переменные фильтров хранятся в G-Sheet.

Вот код. Это не работает. Но это происходит, когда я помещаю текстовую строку вместо переменных.

Большое спасибо,

function Lister_fichiers() {
    // Log the name of every file in the user's Drive that modified after date = 'Var!'A1,
    // whose name contains "MARQUE = 'Var!'B1".
    var app = SpreadsheetApp;
    var classeur = app.getActiveSpreadsheet();

    const Formsheet = classeur.getSheetByName('Var');
    const CsvM = classeur.getSheetByName('CsvM');

    var Date1 = Formsheet.getRange('A1').getValue();
    var Date2 = new Date(Date.UTC(Date1));

    var Marque = Formsheet.getRange('B1').getValue();
    var Pays = Formsheet.getRange('C1').getValue();

    // this line here does not work and causes an error
    var sffiles = DriveApp.searchFiles("modifiedDate > '"+Date2+"' and title contains '"+Marque+"' "); 
}

Кроме того, это без ошибок, но все еще не работает без фильтра даты.

На листе A1 = "2019-01-01" и B1 = "Marque1"

// Строки ниже работают нормально

// var sffiles = DriveApp.searchFiles('modifiedDate > "2019-01-01" and title contains "Marque1" and mimeType = "application/vnd.google-apps.spreadsheet" and trashed=false');


while (sffiles.hasNext()){
        var sffile = sffiles.next();
        var sfname =  sffile.getName();
        var sfdate =  sffile.getLastUpdated(); 
        var sfsize =  sffile.getSize();
        var sfurl =  sffile.getUrl();
        var fileParents = sffile.getParents();
          while (fileParents.hasNext()) {
            var sffolder = fileParents.next();
             Logger.log(sffolder.getName());
          }
        var sfid =  sffile.getId();
  Logger.log(sffile.getId());
  Logger.log(sffile.getName());

  var sflist = [sfname,sfdate,sfsize,sfurl,sfid,sffolder];
  CsvM.appendRow(sflist);
  }
CsvM.appendRow(["A-Name", "Date", "Size", "URL", "ID", "Dossier Parent"]);
    CsvM.sort(1);
}

1 Ответ

2 голосов
/ 04 октября 2019

Что такое точное сообщение об ошибке? Я подозреваю, что проблема с этой строкой:

var Date2 = new Date(Date.UTC(Date1));

Если var Date1 A1 - "2019-01-01", вы должны просто сделать:

var Date2 = new Date(Date1)

Что дает вам объект datetime.

Я думаю, что путаница заключается в том, что вы можете передать строку типа "2019-01-01" в new Date() [0]но не до Date.UTC() [1]

[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC

...