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

请求优化Google Drive文件删除脚本:保留最新7个文件并完善邮件通知

优化后的Google Apps Script脚本:按保留最新7个文件规则清理Drive文件夹

以下是满足你需求的优化脚本,核心逻辑改为每个目标文件夹强制保留最新7个文件,同时完善了无文件删除时的邮件通知机制:

function DeleteOldFiles() {
  // 目标文件夹ID列表,按需修改
  const folderIds = [
    '1YS60U0Cts******I2Lqxb6-_TS0LMho1',   // Calllogs
    '1Vofy1iPjV******yFc11Nhmr6DnHM736',   // Messages
    '1iP-TAOAH_******6jvIuN6Pnln2w6R3g',   // Contacts
    '1kDCzGFu9d******v33PXklT7ds5B6G11'    // Calendars
  ];
  
  let deleteCount = 0;
  let logContent = '';

  // 遍历每个目标文件夹
  for (const folderId of folderIds) {
    const folder = DriveApp.getFolderById(folderId);
    const folderName = folder.getName();
    logContent += `=== 处理文件夹: ${folderName} ===\n`;

    // 获取文件夹内所有文件,存入数组以便排序
    const files = [];
    const fileIterator = folder.getFiles();
    while (fileIterator.hasNext()) {
      files.push(fileIterator.next());
    }

    // 按文件最后更新时间倒序排序(最新的在前)
    files.sort((a, b) => b.getLastUpdated() - a.getLastUpdated());

    // 如果文件数量超过7,删除第8个及以后的文件
    if (files.length > 7) {
      const filesToDelete = files.slice(7);
      filesToDelete.forEach(file => {
        file.setTrashed(true); // 移入回收站,如需永久删除可替换为Drive.Files.remove(file.getId())
        logContent += `已删除文件: ${file.getName()}\n`;
        deleteCount++;
      });
    } else {
      logContent += `文件数量(${files.length})未超过7,无需删除\n`;
    }
  }

  // 发送邮件通知
  const recipientEmail = '你的邮箱地址'; // 替换为实际收件邮箱
  if (deleteCount > 0) {
    MailApp.sendEmail(
      recipientEmail,
      'Drive文件夹清理完成:已删除旧文件',
      logContent
    );
  } else {
    MailApp.sendEmail(
      recipientEmail,
      'Drive文件夹清理通知:无文件被删除',
      '本次清理操作未删除任何文件,所有目标文件夹的文件数量均≤7个'
    );
  }
}

关键优化说明

  • 保留最新7个文件逻辑:

    1. 将文件夹内所有文件存入数组,避免迭代器无法重复访问的问题
    2. 按getLastUpdated()时间倒序排序,确保最新文件排在数组前7位
    3. 使用slice(7)获取第8个及以后的旧文件,批量移入回收站(如需永久删除,可注释掉file.setTrashed(true),启用Drive.Files.remove(file.getId()),注意需提前在脚本编辑器中启用Drive API)
  • 邮件通知优化:

    1. 新增deleteCount变量统计删除文件总数,精准判断是否有操作执行
    2. 无文件删除时,发送明确的告知邮件,避免原逻辑中无日志时不发邮件的问题
    3. 日志内容更结构化,方便查看每个文件夹的处理结果

使用注意事项

  1. 替换脚本中的folderIds列表为你的实际文件夹ID
  2. 替换recipientEmail为接收通知的邮箱地址
  3. 如需永久删除文件,需在脚本编辑器的「服务」中启用Drive API(步骤:编辑器顶部→资源→高级Google服务→找到Drive API并启用)

内容的提问来源于stack exchange,提问作者Alan-53

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:05:17