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:整理无效用户信息,生成邮件内容发送至指定邮箱
- 从下往上删除行:避免删除行后后续行索引偏移,导致漏删或错删问题
使用步骤
- 打开目标Google表格,点击「扩展程序」>「Apps Script」进入脚本编辑器
- 清空默认代码,粘贴上述完整脚本
- 修改开头的配置参数为实际值
- 点击运行按钮,首次运行需完成授权流程(需管理员权限)
- 测试功能正常后,可设置定时触发器(点击「编辑」>「当前项目的触发器」),实现脚本自动定期执行
内容的提问来源于stack exchange,提问作者Prashant Nagaraj
相关产品推荐
相关产品推荐

