我有一段代码(在Java中)列出了个人Google Apps域中组的所有public static void listMembers(String groupKey,Directory service) throws IOException {
Members res = service.members().list(groupKey).execute();
List<Member> members = res.getMembers();
int count = 0;
if (members == null || members.size() == 0) {
System.out.println();
System.out.println("No members found.");
} else {
System.out.println();
System.out.println("Members of "+groupKey);
for (Member member : members) {
count++;
System.out.println(member.getEmail());
}
System.out.println(count);
}
}
。这使用了Google Directory API。
以下是摘录:
exactly 200 members
这样可以正常工作,但是对于任何组,都列出了不超过members.list()
的组,尽管组实际上有更多用户。我尝试搜索我正在使用的mm=int(raw_input("enter a number"))
ans = {
"1":"a",
"2":"b",
"3":"c",
"4":"d",
"5":"e",
"6":"f",
"7":"g",
"8":"h",
"9":"i",
"10":"j",
"11":"k",
"12":"l"
}
v=(mm-1)%12
w=(mm-2)%12
x=(mm-3)%12
y= (mm-4)%12
print ans[str(v)]
print ans[str(w)]
print ans[str(x)]
print ans[str(y)]
函数的限制,但在目录API的Google文档中找不到它。有这样的限制吗?如果是,我可以以某种方式列出所有用户吗?
答案 0 :(得分:3)
查看members.list()上的maxResults和pageToken属性。该页面未指定,但我认为200是maxResults的默认值和最大值。您的应用需要检查结果中是否存在pageToken属性。如果已设置,则至少还要再抓一页结果。继续循环结果直到未设置pageToken。
答案 1 :(得分:3)
我修改了代码以使用pageToken
属性,如下所示:
public static void listMembers(String groupKey,Directory service) throws IOException {
Directory.Members.List res = service.members().list(groupKey);
Members mbrs;
List<Member> members ;
int count = 0;
String pageToken;
do{
mbrs = res.execute();
members = mbrs.getMembers();
System.out.println();
System.out.println("Members of "+groupKey);
for (Member member : members) {
count++;
System.out.println(member.getEmail());
}
pageToken = mbrs.getNextPageToken();
//System.out.println(res.getPageToken()); //The first pageToken of any Directory.Members.List is null.
res.setPageToken(pageToken);
System.out.println(count);
}while(pageToken!=null);
}
我想补充一下,任何Directory.Members.List的第一个pageToken都为null。通过将while循环的条件从pageToken!=null
更改为true
,可以验证这一点。此更改将反复列出所有成员。