Google Groups API返回全角色成员,如何仅获取MEMBER角色用户?
解决Google Groups API仅获取MEMBER角色成员的问题
方案一:修正API请求参数
先检查members.list的roles参数格式,Google Groups API的roles参数实际接受数组类型取值,之前传入字符串'MEMBER'可能靠API兼容逻辑生效,但最近的API更新可能取消了这个兼容。把参数改成数组形式试试:
for group in groups_list: members = service.members() # 将roles改为数组形式 member_request = members.list(groupKey=group['email'], maxResults=200, roles=['MEMBER']) memberEmails = [] while member_request is not None: member_results = member_request.execute() member_list = member_results.get('members', []) for member in member_list: memberEmails.append(member['email'].lower()) member_request = members.list_next(member_request, member_results)
方案二:本地强制过滤(兜底方案)
如果API参数调整后仍不生效,或者不确定API变更细节,可以在遍历成员时手动检查每个用户的role字段,只保留MEMBER角色的用户:
for group in groups_list: members = service.members() # 可保留原参数或直接去掉roles参数,后续会做过滤 member_request = members.list(groupKey=group['email'], maxResults=200) memberEmails = [] while member_request is not None: member_results = member_request.execute() member_list = member_results.get('members', []) for member in member_list: # 校验当前用户角色是否为MEMBER if member.get('role') == 'MEMBER': memberEmails.append(member['email'].lower()) member_request = members.list_next(member_request, member_results)
问题原因分析
大概率是Google Groups API最近调整了roles参数的解析规则:原本传入字符串'MEMBER'能被识别为单值过滤,但现在要求必须传递数组类型参数;也有可能你之前的代码其实一直未真正生效(比如API对字符串参数处理有问题),只是之前群组里没有MANAGER/OWNER角色的用户,所以没暴露问题。
内容的提问来源于stack exchange,提问作者bobz
相关产品推荐
相关产品推荐

