You need to enable JavaScript to run this app. 如何用Google App Script实现域内所有用户Drive存储每日检查及超额通知
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google App Script实现域内所有用户Drive存储每日检查及超额通知

域内全用户Drive存储自动巡检实现方案

现有代码的核心偏差

  • 你当前代码中调用的DriveApp.getStorageUsed()仅能获取脚本运行者本人的Drive存储用量,没有能力跨用户查询域内其他成员的存储数据,这是之前无法找到匹配方案的根本原因
  • 原代码里的存储阈值7.51311111E8仅对应约750MB,和你需要的20GB阈值存在数量级偏差

前置准备要求

要实现跨用户的域内存储巡检,必须满足两个前提:

  • 使用Google Workspace域管理员账号开发运行脚本,普通个人账号无权限调用域级用户数据接口
  • 在App Script服务列表中添加Admin SDK服务,给脚本授予获取用户存储信息的对应权限

可直接复用的修正代码

// 全局配置,可根据实际需求调整
const STORAGE_LIMIT_BYTES = 21474836480; // 20GB对应的字节数
const NOTICE_SUBJECT = "Drive存储超额提醒";
const NOTICE_CONTENT = (usedGB) => `您好,您当前Google Drive已使用存储空间为 ${usedGB} GB,超出域内20GB的存储配额限制,请及时清理冗余文件释放存储空间。`;

/**
 * 核心巡检逻辑:遍历域内所有活跃用户,匹配存储超额规则后发通知
 */
function storageDailyCheck() {
  // 拉取域内所有未停用的用户列表
  const userList = AdminDirectory.Users.list({
    customer: 'my_customer',
    maxResults: 500,
    query: 'isSuspended=false', // 过滤已停用账号,减少无效查询
    fields: 'users(primaryEmail,storageQuotaUsage)' // 仅拉取需要的字段,提升运行效率
  }).users;

  // 逐个校验用户存储使用情况
  userList.forEach(user => {
    const usedBytes = user.storageQuotaUsage;
    // 字节转GB,保留两位小数方便用户理解
    const usedGB = (usedBytes / (1024 * 1024 * 1024)).toFixed(2);

    if(usedBytes > STORAGE_LIMIT_BYTES) {
      MailApp.sendEmail(user.primaryEmail, NOTICE_SUBJECT, NOTICE_CONTENT(usedGB));
    }
  });
}

/**
 * 设置每日自动运行的定时触发器
 */
function setDailyTrigger() {
  ScriptApp
    .newTrigger('storageDailyCheck')
    .timeBased()
    .everyDays(1)
    .atHour(8) // 固定在每日早8点运行,避免随机时间触发打扰
    .create();
}

落地注意事项

  • 首次运行脚本时会弹出权限授权弹窗,需用域管理员账号完成全流程授权,脚本才能正常拉取域内用户数据
  • 若域内总用户数超过500,需补充分页拉取逻辑,循环获取所有用户数据,否则仅能查询到前500个用户的信息
  • 受Google Workspace版本的邮件发送配额限制,若域内超额用户数较多,可调整逻辑将所有超额用户名单汇总成单封邮件发送给域管理员,避免触发发送配额上限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 08:45:03