AdminDirectory.Users.list设置showDeleted=true时query参数会被忽略吗?
结论
这是Google Admin Directory Users.list接口的默认行为,并非你遗漏了配置项。
原因说明
- 当接口请求携带
showDeleted: 'true'参数时,接口仅对已删除用户的数据集做查询,该数据集不支持email=xxx这类面向活跃用户的过滤规则,所以你传入的query参数会被直接忽略,返回所有符合域条件的已删除用户列表。 - 查询活跃用户时没有上述限制,所以你的原有逻辑可以正常返回匹配的用户信息。
可行解决方案
方案1:全量拉取后本地过滤
先拉取当前域下所有已删除用户,再在代码层匹配目标邮箱:
var deletedUsersRes = AdminDirectory.Users.list({ domain: 'mydomain.com', showDeleted: 'true' }); var allDeletedUsers = deletedUsersRes.users || []; // 本地匹配目标邮箱 var targetDeletedUser = allDeletedUsers.find(item => item.primaryEmail === 'name.surname@mydomain.com'); if(targetDeletedUser) { // 执行恢复操作 AdminDirectory.Users.undelete({}, targetDeletedUser.id); }
方案2:已知用户ID时直接查询
如果你提前留存了目标用户的唯一用户ID,可以直接调用Users.get接口定位目标用户,无需拉取全量列表:
var targetDeletedUser = AdminDirectory.Users.get('目标用户的唯一ID', { showDeleted: 'true' });
内容的提问来源于stack exchange,提问作者Daniele Debiagi
相关产品推荐
相关产品推荐

