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

Google Apps Script开发需求:迁移Workspace失效/暂停用户并通知

实现方案:检查Google Workspace用户有效性并迁移表格数据

前置准备

  • 需拥有Google Workspace管理员权限(调用Admin SDK API查询用户状态必需)
  • 在Google Apps Script编辑器中,点击「资源」>「高级Google服务」,找到Admin SDK并启用

完整脚本代码

// 配置参数
const SPREADSHEET_ID = '123xyz456abc';
const NOTIFY_EMAIL = 'notify@domain.com';

function checkAndMoveInvalidUsers() {
  const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
  const activeSheet = spreadsheet.getSheetByName('ActiveUsers');
  const exitedSheet = spreadsheet.getSheetByName('ExitedUsers');
  
  // 获取ActiveUsers所有数据(表头在第1行,跳过表头处理)
  const data = activeSheet.getDataRange().getValues();
  const rowsToMove = [];
  const invalidUserDetails = [];

  // 从第2行开始遍历数据
  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    const email = row[1]; // 假设emailaddress列在第2列(索引从0开始)
    
    if (!email) continue; // 跳过空邮箱行

    // 检查用户有效性
    const isUserValid = checkUserValidity(email);
    if (!isUserValid) {
      rowsToMove.push(i + 1); // 记录表格行号(表格行号从1开始)
      invalidUserDetails.push({
        name: row[0],
        email: email
      });
    }
  }

  // 从下往上删除行,避免索引偏移导致错误
  for (let i = rowsToMove.length - 1; i >= 0; i--) {
    const rowNum = rowsToMove[i];
    // 复制行数据到ExitedUsers
    const rowData = activeSheet.getRange(rowNum, 1, 1, activeSheet.getLastColumn()).getValues()[0];
    exitedSheet.appendRow(rowData);
    // 删除原行
    activeSheet.deleteRow(rowNum);
  }

  // 有无效用户时发送通知邮件
  if (invalidUserDetails.length > 0) {
    sendNotification(invalidUserDetails);
  }
}

// 检查Google Workspace用户是否有效(存在且未被暂停)
function checkUserValidity(email) {
  try {
    const user = AdminDirectory.Users.get(email);
    // 用户存在且未被暂停则返回true
    return !user.suspended;
  } catch (e) {
    // 用户不存在时返回false
    if (e.message.includes('Not Found')) {
      return false;
    }
    // 其他异常直接抛出
    throw e;
  }
}

// 发送迁移通知邮件
function sendNotification(invalidUsers) {
  let emailBody = '以下用户邮箱无效或已被暂停,已从ActiveUsers迁移至ExitedUsers:\n\n';
  invalidUsers.forEach(user => {
    emailBody += `姓名:${user.name},邮箱:${user.email}\n`;
  });

  MailApp.sendEmail({
    to: NOTIFY_EMAIL,
    subject: '无效用户迁移通知',
    body: emailBody
  });
}

脚本说明

  • 配置参数:开头的SPREADSHEET_ID和NOTIFY_EMAIL需替换为你的实际值
  • checkAndMoveInvalidUsers:主函数,负责读取表格数据、遍历检查用户、迁移无效用户行、发送通知
  • checkUserValidity:调用Admin SDK接口查询用户状态,通过try-catch捕获用户不存在的异常,同时校验suspended字段判断是否被暂停
  • sendNotification:整理无效用户信息,生成邮件内容发送至指定邮箱
  • 从下往上删除行:避免删除行后后续行索引偏移,导致漏删或错删问题

使用步骤

  1. 打开目标Google表格,点击「扩展程序」>「Apps Script」进入脚本编辑器
  2. 清空默认代码,粘贴上述完整脚本
  3. 修改开头的配置参数为实际值
  4. 点击运行按钮,首次运行需完成授权流程(需管理员权限)
  5. 测试功能正常后,可设置定时触发器(点击「编辑」>「当前项目的触发器」),实现脚本自动定期执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:42:54