我試圖檢索我公司中每個組的所有成員。我的代碼可以正常工作,除非組中有超過200個成員,然後在實際列出諸如「[email protected]」之類的成員之前輸出組ID。谷歌管理API pageToken循環幫助python
我不確定pageToken是如何工作的,所以無法爲超過200個成員的組獲得單個輸出。再次感謝您的幫助。
此外,我添加了del all_members [:],這樣它將只顯示該組的成員,否則它會追加前一組的成員。
輸出:
[email protected]:2構件(一個或多個)
[email protected] - OWNER
[email protected] - MEMBER[email protected] :634構件(一個或多個)
[email protected]:634構件(一個或多個)
[email protected]:634構件(一個或多個)
[email protected]:634件(S)
[email protected] - 會員
[email protected] - 會員
...
代碼:
directory_service = authenticate()
all_groups = []
all_members = []
page_token = None
new_page_token = None
params = {'domain': 'company.com', 'customer': 'my_customer'}
while True:
try:
if page_token:
params['pageToken'] = page_token
current_page = directory_service.groups().list(**params).execute()
all_groups.extend(current_page['groups'])
page_token = current_page.get('nextPageToken')
if not page_token:
break
except errors.HttpError as error:
print 'An error occurred: %s' % error
break
for group in all_groups:
group_key = group['email']
new_params = {'groupKey': '%s' % group_key, 'maxResults': '500'}
if group['directMembersCount'] == '0':
continue
else:
while True:
try:
if new_page_token:
new_params['pageToken'] = new_page_token
new_current_page = directory_service.members().list(**new_params).execute()
print ''
print '%s: %s member(s)' % (group['email'], group['directMembersCount'])
all_members.extend(new_current_page['members'])
new_page_token = new_current_page.get('nextPageToken')
if not new_page_token:
break
except errors.HttpError as error:
print 'An error occurred: %s' % error
break
for member in all_members:
print ' %s - %s' % (member['email'], member['role'])
del all_members[:]