Как удалить сразу несколько файлов в Drive API для Javascript?

function deleteFiles(fileId,supportsTeamDrives) {



var date = new Date();
date.setDate(date.getDate() - 180);
var n = date.toISOString().split('.')[0] ;
  var test = false;

  gapi.client.drive.files.list({
    pageSize: x,
     q: "starred = "+test+" and viewedByMeTime < '"+n+"'",
     orderBy: 'quotaBytesUsed desc',

      fields: "nextPageToken, files(id, name, viewedByMeTime, mimeType, quotaBytesUsed)",

     }

    )

  .then(function(response) {
  var files = response.result.files;

      if (files && files.length > 0) {
        for (var i = 0; i < files.length; i++) {
          var file = files[i];
          var file_id = file.id,
          )');

           }}

  var request = gapi.client.drive.files.delete({
  supportsTeamDrives: 'false',
 fileId: file_id ,
  });   }

 request.execute(function(resp) { });




}

Я хочу, чтобы эта функция отображала идентификаторы файлов, так как каждый идентификатор файла удаляется. Как мне объединить функции файла списка и удаления файлов вместе, чтобы это работало?

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


comment
Вам нужно что-то делать после завершения всех удалений? прямо сейчас мой ответ выполняет только обещания удаления, но не дает вам знать, когда оно завершено или обнаружены ошибки.   -  person Abdullah Rasheed    schedule 10.03.2017
comment
@inspired, спасибо за ответ! Итак, я хочу, чтобы в конце было обновление, когда все будет удалено, но я также хочу, чтобы список (предоставленный функцией файла списка, который у меня есть) обновлялся при удалении каждого файла. Однако из моего сообщения здесь: stackoverflow.com/questions/42712122/, у меня есть проблемы с очисткой доски перед удалением еще одного списка файлов. Любая помощь будет оценена по достоинству!   -  person Pig    schedule 10.03.2017


Ответы (1)


Вы можете изменить свой код, чтобы удалить файл в своем цикле:

    function deleteFiles(fileId, supportsTeamDrives) {

    var date = new Date();
    date.setDate(date.getDate() - 180);
    var n = date.toISOString().split('.')[0];
    var test = false;

    gapi.client.drive.files.list({
                pageSize: x,
                q: "starred = " + test + " and viewedByMeTime < '" + n + "'",
                orderBy: 'quotaBytesUsed desc',

                fields: "nextPageToken, files(id, name, viewedByMeTime, mimeType, quotaBytesUsed)",

            }

        )

        .then(function(response) {
            var files = response.result.files;

            if (files && files.length > 0) {
                for (var i = 0; i < files.length; i++) {
                    var file = files[i];
                    var file_id = file.id;
                    deleteFile(file_id);
                }
            }

        });
}

// method used to delete the files
function deleteFile(file_id) {
    var request = gapi.client.drive.files.delete({
        supportsTeamDrives: 'false',
        fileId: file_id,
    });
    request.execute(function(resp) {});
}
person Abdullah Rasheed    schedule 10.03.2017
comment
Что я могу реализовать, чтобы он предупреждал пользователя о завершении, когда он готов? - person Pig; 10.03.2017
comment
Разве вы не вызываете Delete API снова и снова для удаления каждого файла? Разве это не неэффективно? - person pa1.Shetty; 24.05.2019