Периодически удаляйте все файлы определенного типа из корзины Google Диска

У меня есть автоматическое резервное копирование некоторых файлов db на мой диск Google. Процедура резервного копирования добавляет новые файлы базы данных (.lxdb) в определенную папку и удаляет старые.

На Google Диске удаленные файлы попадают в корзину, быстро занимая ГБ дискового пространства.

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

function DeleteTrashedFiles(){
  Drive.Files.emptyTrash();
};

Однако каков современный способ запросить массив всех файлов .lxbd в корзине, а затем удалить их? (лучше не перебирать все файлы GD)


person haemse    schedule 15.04.2018    source источник
comment
Files: emptyTrash of Drive API не имеет параметров. Он просто удаляет все файлы в корзину. Таким образом, нельзя удалить только специальные файлы, используя только Files: emptyTrash. Если вы хотите удалить специальные файлы с помощью Files: emptyTrash, в качестве обходного пути, он может подумать, что удаляет их после эвакуации других файлов из корзины, и возвращает эвакуированные файлы в корзину. Если это не то, что вам нужно, извините.   -  person Tanaike    schedule 16.04.2018


Ответы (1)


У вас есть два варианта:

  1. Вместо того, чтобы перемещать старые .lxbd файлы в корзину, просто немедленно удалите их. Из скрипта приложений с включенной "расширенной службой" Drive это будет Drive.Files.remove(file.id);
  2. Запрос с перечислить удаленные файлы для определенного типа файлов, а затем вызвать Drive.Files.remove для каждого из них.

Пример варианта 2 для Диска «Расширенная служба» в Google Apps Script:

function deleteTrashedFiletype(someMimetype) {
  var options = {
    q: "trashed=true AND mimeType='" + someMimetype + "' AND '" + Session.getActiveUser().getEmail() + "' in owners",
    pageToken: null
  };
  do {
    var result = Drive.Files.list(options);
    result.items.forEach(function (file) {
      if(file.mimeType === someMimetype)
        Drive.Files.remove(file.id);
      else throw new Error("The query returned the wrong mimetype");
    });
    options.pageToken = result.nextPageToken;
  } while(options.pageToken);
}

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

person tehhowch    schedule 16.04.2018