【问题标题】:How do I delete multiple files at once in Drive API for Javascript?如何在 Drive API for Javascript 中一次删除多个文件?
【发布时间】:2025-12-05 04:10:01
【问题描述】:
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) { });




}

我希望这个函数列出文件 ID,因为每个文件 ID 都被删除了。如何将列表文件和删除文件功能组合在一起才能正常工作?

目前我将它们分成两个函数,但变量fileID只保存最后输出的fileID,因此,删除函数只会删除一个文件,最后列出的文件。我希望它列出每个文件并将其输出到一个变量,并在它列出时被删除。为了实现这一目标,我可以更改或添加哪些内容?

【问题讨论】:

  • 所有删除完成后是否需要做点什么?现在我的回答只执行删除承诺,但不会让你知道它何时完成或捕获错误。
  • @inspired,感谢您的回答!所以我想要的是在删除所有内容时最后进行更新,但我还希望在删除每个文件时更新列表(由我拥有的列表文件功能提供)。但是,从我在这里的帖子中:*.com/questions/42712122/…,我在删除另一个文件列表之前清除板有问题。任何帮助将不胜感激!

标签: javascript google-api google-drive-api google-drive-realtime-api google-apis-explorer


【解决方案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) {});
}

【讨论】:

  • 我可以对其实施什么,以便在完成时提醒用户它已完成?
  • 你不是一次又一次地调用Delete API来删除每个文件吗?是不是效率低下?