如何使用Google Admin API批量删除用户账号的管理员角色分配?求脚本示例
Google Apps Script 批量删除用户管理员角色分配示例
前置准备
- 在Google Apps Script编辑器中,点击「扩展」>「Apps Script 编辑器」(旧界面为「资源」>「高级Google服务」),启用Admin SDK API。
- 确保你的账号拥有Google Workspace超级管理员权限,且已授权脚本访问Admin API。
核心脚本示例
以下脚本包含获取用户角色分配、单个删除及批量处理的完整功能:
// 获取指定用户的所有管理员角色分配ID function getUserRoleAssignments(userEmail) { const roleAssignments = []; try { const response = AdminDirectory.RoleAssignments.list(userEmail); if (response.items && response.items.length > 0) { response.items.forEach(assignment => { roleAssignments.push(assignment.id); }); } } catch (err) { console.log(`获取用户 ${userEmail} 角色分配失败: ${err.message}`); } return roleAssignments; } // 删除单个角色分配 function deleteRoleAssignment(assignmentId) { try { AdminDirectory.RoleAssignments.remove(assignmentId); console.log(`角色分配 ${assignmentId} 删除成功`); } catch (err) { console.log(`删除角色分配 ${assignmentId} 失败: ${err.message}`); } } // 批量删除指定用户列表的管理员角色 function bulkRemoveAdminRoles(userEmailList) { userEmailList.forEach(email => { const assignmentIds = getUserRoleAssignments(email); if (assignmentIds.length === 0) { console.log(`用户 ${email} 没有管理员角色分配`); return; } assignmentIds.forEach(id => deleteRoleAssignment(id)); }); } // 示例:调用批量删除函数 function runBulkRemoval() { // 替换为你的目标用户邮箱列表 const targetUsers = [ 'user1@yourdomain.com', 'user2@yourdomain.com', 'user3@yourdomain.com' ]; bulkRemoveAdminRoles(targetUsers); }
注意事项
- 若只需删除特定类型的管理员角色(比如仅删除「用户管理员」),可在
getUserRoleAssignments函数中添加过滤条件,通过assignment.roleId匹配目标角色ID(角色ID可通过AdminDirectory.Roles.list()获取)。 - 首次运行脚本会触发权限授权,需以超级管理员账号完成授权流程。
- 建议先在测试账号上验证脚本功能,避免误操作生产环境的角色分配。
内容的提问来源于stack exchange,提问作者sjo
相关产品推荐
相关产品推荐

