You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google App Script清理Google Drive同名文件:仅保留最新版本

Google Drive保留同名文件最新修改版本的实现方案

核心逻辑

  1. 递归遍历目标文件夹及其所有子文件夹,收集所有文件的名称与最后修改时间
  2. 按文件名分组,记录每组中修改时间最新的文件ID
  3. 再次遍历所有文件,将非最新版本的文件移至回收站

代码示例

function keepLatestVersionsOnly() {
  // 替换为你的目标文件夹ID(从文件夹URL的folders/后获取)
  const targetFolderId = "YOUR_FOLDER_ID_HERE";
  const targetFolder = DriveApp.getFolderById(targetFolderId);
  
  // 存储文件名对应的最新文件信息
  const latestFilesMap = new Map();
  
  // 递归遍历文件夹,记录每个文件名的最新版本
  function scanFiles(folder) {
    // 处理当前文件夹内的文件
    const filesIterator = folder.getFiles();
    while (filesIterator.hasNext()) {
      const file = filesIterator.next();
      const fileName = file.getName();
      const lastModifiedTime = file.getLastUpdated();
      
      // 更新最新文件记录
      if (!latestFilesMap.has(fileName) || lastModifiedTime > latestFilesMap.get(fileName).modifiedTime) {
        latestFilesMap.set(fileName, {
          fileId: file.getId(),
          modifiedTime: lastModifiedTime
        });
      }
    }
    
    // 递归处理子文件夹
    const foldersIterator = folder.getFolders();
    while (foldersIterator.hasNext()) {
      scanFiles(foldersIterator.next());
    }
  }
  
  // 第一步:扫描所有文件,确定最新版本
  scanFiles(targetFolder);
  
  // 第二步:遍历文件,移动旧版本到回收站
  function moveOldVersions(folder) {
    const filesIterator = folder.getFiles();
    while (filesIterator.hasNext()) {
      const file = filesIterator.next();
      const fileName = file.getName();
      const latestFileId = latestFilesMap.get(fileName).fileId;
      
      // 仅移动非最新且未被删除的文件
      if (file.getId() !== latestFileId && !file.isTrashed()) {
        file.setTrashed(true);
        console.log(`已移至回收站:${fileName} (ID: ${file.getId()})`);
      }
    }
    
    // 递归处理子文件夹
    const foldersIterator = folder.getFolders();
    while (foldersIterator.hasNext()) {
      moveOldVersions(foldersIterator.next());
    }
  }
  
  // 执行移动操作
  moveOldVersions(targetFolder);
  
  // 弹出操作完成提示
  SpreadsheetApp.getUi().alert("操作完成!所有旧版本同名文件已移至回收站。");
}

使用步骤

  1. 打开Google Apps Script编辑器:通过Google Drive右上角「新建」→「更多」→「Google Apps 脚本」进入
  2. 新建空白脚本,替换默认代码为上述代码
  3. 替换代码中的YOUR_FOLDER_ID_HERE为目标文件夹的ID(文件夹URL中folders/后的字符串)
  4. 点击编辑器顶部的「运行」按钮,首次运行需完成权限授权(按照页面提示操作即可)
  5. 运行完成后会弹出提示框,可通过「查看」→「日志」查看具体处理的文件列表

注意事项

  • 操作不可逆,建议先在测试文件夹中验证功能
  • 单次脚本运行最长限制为6分钟,若文件数量过大,可拆分文件夹分批处理
  • 文件名区分大小写,Document.pdf与document.pdf会被视为不同文件
  • 仅处理文件,不会对文件夹进行操作

内容的提问来源于stack exchange,提问作者SMARTDEV999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:30:23