Автоматически находить и безвозвратно удалять элементы в корзине на Google Диске

У меня есть тысячи файлов на Google Диске, которые я удалил и отправил в корзину. Моя проблема в том, что они все еще появляются после очистки корзины.

Вынести мусор просто не получится. Единственный способ удалить элементы и уменьшить квоту - это выполнить поиск элементов с помощью оператора поиска is: trashed, навсегда удалив их таким образом, за исключением того, что это занимает вечность, и я понятия не имею, как автоматизировать это с помощью дисков api.

Я успешно выполнил это из другого вопроса но это не помогает моему делу.

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

Любая помощь очень ценится


person Max    schedule 18.01.2018    source источник


Ответы (3)


«У меня есть тысячи файлов на Google Диске, которые я удалил и отправлены в корзину. Моя проблема в том, что они все еще появляются после очистки корзины».

Просто вспомнив это второе предложение, стоит обратить внимание на то, что при использовании Google API (например, с rclone) или даже с собственным веб-интерфейсом Google всегда есть задержка между выдачей любой инструкции «Очистить корзину» на Google Диске. действуя это. И чем больше файлов в корзине и чем они меньше, тем больше времени потребуется для полной очистки корзины. Создание тысяч очень маленьких файлов может занять довольно много времени. И вы не можете контролировать, когда Google Диск действительно начнет удаление или как быстро он будет проходить через корзину.

Любой, кто знаком с «Сборкой мусора», точно поймет, что я имею в виду - «Вы не знаете, в какой час приходит хозяин», как сказал бы [раздражающе] мой министр-папа: D

Вы можете продемонстрировать это поведение для себя, «удалив» много файлов в корзину, отобразив корзину в веб-браузере, а затем введите (например) «rclone cleanup mydrive:», которая является командой rclone для очистки Google Диска. Bin (где mydrive: настроен так, чтобы указывать на ваш Google Диск).

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

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

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

Я просто подумал, что стоит указать на это (вы можете не согласиться: D), поскольку я тоже пытался очистить свою корзину в прошлом и думал, что Google Диск ничего не делает.

Изменить: извинения за редактирование. Я хотел сказать, что после того, как вы выполнили команду «rclone cleanup mydrive:», если вы затем используете «rclone about mydrive:», одна из статистических данных, которые она сообщает, будет общим пространством, используемым файлами в Bin. Периодически выдавая «rclone about ...», вы можете видеть, что объем пространства, используемого Bin, уменьшается каждый раз. Часто это лучший способ проверить, как продвигается ваша команда «Удалить навсегда», поскольку Google Диск уже считает, что эти файлы исчезли, хотя в теории, а не на практике.

person Baz Cuda    schedule 12.09.2019

Метод Купера не помог мне.

files.hasNext()

не перебирает элементы корзины. Купер указал мне на Advanced Google Services API:

//This method requires adding the Advanced Google Services Drive API under Resources -> Advanced Google Services
//And the Google API Console[https://console.cloud.google.com/apis/library/drive.googleapis.com/]
function DeleteTrashedFiles(){
  Drive.Files.emptyTrash();
};

Если вы хотите увидеть, какую часть вашей квоты вы удалили, вы можете это сделать.

function DeleteTrashedFilesLogged(){
  // Enable Drive.About.get() fields here:
  // https://developers.google.com/apis-explorer/?hl=en_US#p/drive/v3/
  var lngBytesInTrash = Drive.About.get().quotaBytesUsedInTrash;
  var filesDrive = Drive.Files;
  Logger.log('Attempting to clean up ' + lngBytesInTrash + ' bytes');
  filesDrive.emptyTrash();
  Logger.log('Trash now contains ' + Drive.About.get().quotaBytesUsedInTrash + ' bytes');
  filesDrive = Drive.Files;
};
person seakintruth    schedule 19.01.2018

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

function delTrashedFiles() {
  var files=DriveApp.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    if(file.isTrashed()) {
       Drive.Files.remove(file.getId())
     }
  }
}

Вам нужно будет включить Drive API

person Cooper    schedule 18.01.2018