file - 如何最好地删除文件夹及其子文件夹中的所有文件

标签 file google-apps-script

美好的一天。我试图获取文件夹和子文件夹中的所有文件并删除它们,但代码不起作用,它只遍历第一个子文件夹,并且其中没有文件,脚本结束,请帮助。

function DeleteInvoices() {
 var folder = DriveApp.getFolderById("1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e");
 var fl = folder.getFolders();
 while (fl.hasNext()) {
 var files = fl.next();
 Logger.log(files)
 var fs = files.getFiles();
 while (fs.hasNext()) {
 var fss = fs.next();
 fss.setTrashed(true)
  }
 }
} 

最佳答案

我相信您的目标如下。

  • 您想要删除 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 文件夹中的所有文件。
    • 在这种情况下,您希望将文件删除到垃圾箱。
  • 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 文件夹有子文件夹,您想要删除所有子文件夹中的所有文件夹。
  • 您不想删除子文件夹。

修改点:

  • 在您的脚本中,我认为会检索 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 文件夹下的文件夹中的文件。
    • 例如,如果 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 的文件夹有 2 个文件夹,并且这 2 个文件夹有 1 个文件和 1 个文件夹,每个文件夹中有 1 个文件,则您的脚本将检索 2 个文件。因为该脚本从 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 文件夹下的文件夹中检索文件。
  • 为了遍历 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 中的所有子文件夹,需要使用递归循环扫描所有文件夹,包括 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e 中的子文件夹。

当以上几点反射(reflect)到脚本中时,就会变成如下。

修改后的脚本:

function DeleteInvoices() {
  const getAllFiles = folder => {
    const files = folder.getFiles();
    while (files.hasNext()) {
      const file = files.next();
      console.log(file.getName());
      file.setTrashed(true);
    }
    const folders = folder.getFolders();
    while (folders.hasNext()) getAllFiles(folders.next());
  }

  var folder = DriveApp.getFolderById("1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e");
  getAllFiles(folder);
}
  • 在此脚本中,使用getAllFiles函数扫描所有子文件夹中的所有文件,并删除文件。 (它们被移至垃圾箱。)
  • 已删除文件的文件名显示在控制台中。

注意:

  • 在此脚本中,请在启用 V8 运行时的情况下使用它。
  • 当文件数量很大时,首先会检索文件 ID,下一步可能适合使用批量请求来删除文件。 Ref

引用文献:

关于file - 如何最好地删除文件夹及其子文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65407497/

相关文章:

c - 文件按行作为字符串输入到数组中

gmail - 根据时间在 Gmail 中搜索电子邮件

javascript - 在 Google 表格中输入数据后自动保护单元格/范围

google-apps-script - Google Apps Script - 部署为 Webapp - 每次都是新版本?

javascript - 更改 Google 日历中事件的颜色

java - 如何将文件/目录移动到 Java 中的回收站而不是永久删除它

c++ - 警告 : control reaches end of non-void function [-Wreturn-type]

c - 是否可以在不复制的情况下删除大文件的两端?

javascript - 使用谷歌电子表格作为 tumblr 主题的数据库?

c - 奇怪的 append 行为