我正在试用Admin,并试图在Google电子表格中列出组成员。下面是我想出的代码:
function recordGroupsMembers() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Get all groups
var groupPageToken, groupPage;
do {
groupPage = AdminDirectory.Groups.list({
domain: 'mydomain.com',
maxResults: 100,
pageToken: groupPageToken
});
var groups = groupPage.groups;
if (groups) {
//Iterate groups
for (var i in groups) {
var group = groups[i];
//Get members of group
var membersPageToken, membersPage;
do {
membersPage = AdminDirectory.Members.list(group, {
maxResults: 100,
pageToken: membersPageToken
});
var members = membersPage.members;
if (members) {
//Iterate group members
for (var j in members) {
var member = members[j];
Logger.log('%s member: %s', group.email, member.email);
}
} else {
Logger.log('%s: no members.', group.email);
}
membersPageToken = membersPage.nextPageToken;
} while (membersPageToken);
}
} else {
Logger.log('No groups found.');
}
groupPageToken = groupPage.nextPageToken;
} while (groupPageToken);
ScriptProperties.setProperty('lastUpdate', new Date());
}对于AdminDirectory.Members.list调用,将显示此错误:
未授权访问此资源/api
要明确的是,Admin目录服务是已启用在Resources > Advanced…下,并在Google控制台中。
此外,运行此脚本的用户能够使用API Explorer成功地检索预期的结果。
我给人的印象要么是忽略了一些非常简单的东西,要么就是在"应用程序脚本自动处理授权流。“的语句中出现了一个bug。
发布于 2014-12-29 16:56:38
基本上,这个脚本有两个问题。
没有授权访问此资源/api ->,至少有两个原因:
a) You don't have sufficient Admin privileges to access this API (Basically, you're not a SuperAdmin).
b) The domain is spelled incorrectly in your live code (I hesitate to even mention this one, but mistakes do happen).否则,这个部分对我来说很好,我只能复制以下内容:
Not Authorized to access this resource/api当这两个问题之一适用的时候。
一旦您解决了这个错误,您就会遇到一个“坏请求”:
membersPage = AdminDirectory.Members.list(group, {
maxResults: 100,
pageToken: membersPageToken
});在21号线附近。
这是因为这句话:
var group = groups[i];看起来它只是返回一个带有组名的字符串,但实际上它返回的内容如下:
{id=GROUPID, nonEditableAliases=[GROUPEMAIL, GROUPEMAIL], etag=GROUPTAG, email=GROUPEMAIL, directMembersCount=3, description=, adminCreated=true, name=GROUPNAME, kind=admin#directory#group}这是一个简单的修补程序,我们只需将其替换为:
membersPage = AdminDirectory.Members.list(group.email, {
maxResults: 100,
pageToken: membersPageToken
});它将返回我们正在寻找的结果。
https://stackoverflow.com/questions/27684315
复制相似问题