Google скриптинг |Переместить файл старше одного дня в другую папку - PullRequest
0 голосов
/ 16 декабря 2018

Итак, я пытался собрать этот сценарий из нескольких источников, но он просто не работает, что я делаю не так?

function getOldFileIDs() {
  var fileIDs = [];
  var oldDate = new Date().getTime() - 3600*1000*1*1;
  var cutOffDate = Utilities.formatDate(new Date(oldDate), "GMT", "yyyy-MM-dd");

  var folder = DriveApp.getFolderById('15CqfGbLtBVu3B6-4IGALRMOKJGkhXczF');
  var files = folder.searchFiles('creationDate < "' + cutOffDate + '"');

  while (files.hasNext()) {
    var file = files.next();
    fileIDs.push(file.getId());
    Logger.log('ID: ' + file.getId() + ', Name: ' + file.getName());
  }
  return fileIDs;
};

function deleteFiles() {
  var fileIDs = getOldFileIDs();
  var folder = DriveApp.getFolderById("15CqfGbLtBVu3B6-4IGALRMOKJGkhXczF")

  fileIDs.forEach(function(fileID) {
    DriveApp.getFileById(fileID).makeCopy(DriveApp.getFileById(fileID).getName());
    DriveApp.getFileById(fileID).setTrashed(true);
  });
}

1 Ответ

0 голосов
/ 16 декабря 2018

Эта функция будет получать идентификаторы файлов ваших старых файлов.

function getDayOldFileIds() {
  var fileIdsA=[]
  var currdate=new Date();
  var oldDate = new Date(currdate.valueOf() - 86400000);//86400000 milliseconds in a day
  var cutOffDate = Utilities.formatDate(new Date(oldDate), Session.getScriptTimeZone(), "yyyy-MM-dd");
  var folder = DriveApp.getFolderById('15CqfGbLtBVu3B6-4IGALRMOKJGkhXczF');
  var files = folder.searchFiles('creationDate < "' + cutOffDate + '"');
  while (files.hasNext()) {
    var file = files.next();
    fileIdsA.push(file.getId());
  }
  return fileIdsA;
}

Если вы хотите сделать резервные копии файлов, эта процедура работает для меня довольно хорошо.И я добавил строку, чтобы уничтожить их, если хотите.Эта подпрограмма также поддерживает командные диски.

function moveFilesToBackupFolder(fileIdsA){
  var backUpFolder=DriveApp.getFolderById(getGlobal('BackupDirId'));
  var subFldrName='FilesBackup' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd_HH:mm:ss');
  var subFldr=backUpFolder.createFolder(subFldrName);
  for(var i=0;i<fileIdsA.length;i++){
    var file=DriveApp.getFileById(fileIdsA[i]);
    var copyName=file.getName();
    var res=file.makeCopy(copyName,subFldr);
    if (file.getMimeType() == MimeType.GOOGLE_APPS_SCRIPT) {
      Drive.Files.update({"parents": [{"id": subFldr.getId()}]}, res.getId(), null, {"supportsTeamDrives":true});
    }
    file.setTrashed(true);//remove this if you dont want to trash them
  }
}
...