Удалить файлы из GDrive Trash - PullRequest
0 голосов
/ 03 мая 2020

У меня есть сценарии резервного копирования, которые копируют мои файлы в GDrive, а также удаляют файлы старше X дней. Но это наполняет мою корзину большим количеством этих файлов. Я хочу удалить их из корзины sh.

Я написал этот код:

function getTrashedFiles() {
  //find every file in bin
  var trashedSearch = DriveApp.searchFiles('trashed=true');
  while (trashedSearch.hasNext()) {
    var file = trashedSearch.next();
    if (file.getName().indexOf("DBKLP") >= 0) {
      //this is correctly printing files that I want to remove
      Logger.log(file.getName());
      //this should remove from bin
      DriveApp.removeFile(file);
    }
  }
}

Этот код правильно находит каждый файл, который начинается с "DBKLP". Но когда он запускается, он не удаляет файлы из корзины. Он просто удаляет их «еще раз», поэтому их дата удаления в основном «сейчас».

Я не могу найти способ "удалить из корзины".

Ответы [ 3 ]

0 голосов
/ 03 мая 2020
Gmail.Users.Messages.batchDelete(['array of messageids'], "me");

Чтение

0 голосов
/ 08 мая 2020

Из документации : removeFile (child) не удаляет файл, но если файл удаляется из всех его родителей, он не может быть просмотрен на диске, кроме как при его поиске или использовании " Все элементы "view.

Вы пробовали Drive.Files.remove() вместо DriveApp.removeFile()? Чтобы включить его, в редакторе сценариев перейдите в раздел «Ресурсы»> «Дополнительные службы Google»> «Drive API»

У меня есть похожий сценарий, который работает. Обратите внимание, что он должен найти все папки и , потому что они обрабатываются отдельно.

// Delete all files from trash older than 1 month
function cleanOldTrash() {
  var files = DriveApp.getTrashedFiles();
  var folders = DriveApp.getTrashedFolders();

  var lastMonth = new Date();
  lastMonth.setDate(lastMonth.getDate() - 30);

  while (files.hasNext()) {
    var file = files.next();
    if (file.getLastUpdated() < lastMonth ) {
      Drive.Files.remove(file.getId());
    }
  }

  while (folders.hasNext()) {
    var folder = folders.next();
    if (folder.getLastUpdated() < lastMonth) {
     Drive.Files.remove(folder.getId());
  }
}
}

У меня действительно есть проблема с этим сценарием, когда файлы хранятся в tra sh из Team Drives, к которым у меня нет разрешения на доступ, но я постараюсь получить дополнительную помощь по этому вопросу в отдельном вопросе. Я обновлю этот ответ, если потребуется.

0 голосов
/ 03 мая 2020

AppScript DriveApp не поддерживает его, но вы можете сделать это с помощью Drive API v3. Как гласит документация , вам нужно использовать метод HTTP DELETE; так же вы можете вообще пропустить уничтожение этих файлов. Вот пример (мой) того, как использовать Google API с AppScript (это еще один API, но, по крайней мере, это хорошая отправная точка). Надо надеяться, что документация в сочетании с грубым примером приведут вас в правильном направлении.

...