Удалить старые файлы из папки Google Диска - PullRequest
2 голосов
/ 04 октября 2019

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

Я включил расширенный сервис Google под названием DRIVE API V2.

Я активировалтриггер для анализа папки каждые 5 минут, но часто файлы не удаляются, они остаются в папке. Скрипт работает иногда да, а иногда нет.

Я хотел бы знать, что не так или что мне нужно отредактировать, чтобы он работал идеально.

function getOldFileIDs() {
  // Old date is 3 Hours
  var oldDate = new Date().getTime() - 3600*1000*3;
  var cutOffDate = new Date(oldDate).toISOString();

  // Get folderID using the URL on google drive
  var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  var files = folder.searchFiles('modifiedDate < "' + cutOffDate + '"');

  var obj = [];
  while (files.hasNext()) {
    var file = files.next();
    obj.push({id: file.getId(), date: file.getDateCreated()});
  }
  obj.sort(function(x, y) {return x.date < y.date ? 1 : -1});
  obj.shift();
  var fileIDs = obj.map(function(e) {return e.id});
  return fileIDs;
};

function deleteFiles() {
  var fileIDs = getOldFileIDs();
  fileIDs.forEach(function(fileID) {
    Drive.Files.remove(fileID);
  });
};

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

И новая деталь, появилась новая ошибка, которая до этого не произошла ... Сказав, что:

Ошибка вызова API для drive.files.delete с ошибкой Недостаточно прав для этого файла (строка 24)

Строка 24:

    Drive.Files.remove(fileID);

Ответы [ 2 ]

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

Используя пользовательские (бесплатные) учетные записи, только владелец файла может удалить их. Чтобы предотвратить ошибку, перед вызовом Drive.Files.remove(fileID) ваш код должен проверить, являетесь ли вы владельцем файла.

Related

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

Попробуйте это:

 obj.sort(function(a, b) {
    var a=new Date(a.date).valueOf();
    var b=new Date(b.date).valueOf();
    return b-a;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...