基于G Suite Admin SDK的表格驱动批量域用户删除脚本开发咨询
嘿,刚好我最近开发了一个完全匹配你需求的脚本——从电子表格提取邮箱,调用G Suite Admin SDK删除对应域账户,还自带表单提交触发的逻辑。给你完整的实现方案:
脚本功能概述
这个脚本的核心流程是:
- 绑定到一个关联了表单的电子表格
- 当用户提交表单时,自动触发处理函数
- 从表单提交的记录中提取电子邮箱地址
- 调用Google Workspace(原G Suite)Admin SDK删除该域用户账户
- 记录每一次操作的结果(成功/失败)
核心代码实现
表单提交触发入口函数
这是表单提交时的触发函数,负责接收表单事件并调用删除逻辑:
//** 点击“提交”按钮时删除用户 function onFormSubmit(e) { // Logger.log(e); // 调试时可以打开这行查看事件对象详情 // 表单提交时会自动传递事件对象e,包含所有表单提交参数 deleteUsers(e); }
核心删除逻辑函数
这个函数负责提取邮箱、校验格式、调用Admin SDK并记录操作结果:
function deleteUsers(e) { // 从事件对象中获取表单提交的所有响应 const response = e.response; const itemResponses = response.getItemResponses(); // 遍历表单字段,找到电子邮箱对应的内容(这里要和你表单的字段标题一致) let userEmail = ''; for (const itemResponse of itemResponses) { if (itemResponse.getItem().getTitle() === '电子邮箱') { userEmail = itemResponse.getResponse(); break; } } // 先校验邮箱格式,避免无效调用 if (!userEmail || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(userEmail)) { Logger.log('⚠️ 无效的邮箱地址:' + userEmail); return; } try { // 调用Admin SDK删除用户 AdminDirectory.Users.remove(userEmail); Logger.log('✅ 成功删除用户:' + userEmail); // 可选:把删除成功的状态记录到电子表格的最后一列 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const lastRow = sheet.getLastRow(); sheet.getRange(lastRow, sheet.getLastColumn() + 1).setValue('已删除'); } catch (error) { Logger.log('❌ 删除用户失败:' + userEmail + ',错误信息:' + error.message); // 可选:把失败状态和错误信息记录到表格 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const lastRow = sheet.getLastRow(); sheet.getRange(lastRow, sheet.getLastColumn() + 1).setValue('删除失败:' + error.message); } }
必须的前置准备
要让这个脚本正常运行,你需要完成这几步:
- 确保你的Google账号拥有Google Workspace管理员权限,有权限删除域用户
- 在Google Apps Script编辑器中,点击资源 > 高级Google服务,找到并启用Admin Directory API
- 确保你的表单已经和目标电子表格关联,并且表单中包含标题为“电子邮箱”的字段(如果你的字段标题不同,记得修改代码中的对应字符串)
内容的提问来源于stack exchange,提问作者merilstack
相关产品推荐
相关产品推荐

