我有一个Google脚本,可以获取我们的edu域中所有Google课堂的列表以及每个课堂中的所有作业(“课程作业”)。将此作为Google域管理员运行,我可以获取教室列表,但尝试获取分配列表会导致“调用者没有权限”错误。 Google域管理员无权获取作业列表吗?我需要在这里加入一些特殊的身份验证方法吗?
function listCourses() {
var optionalArgs = {
pageSize: 20
};
var response = Classroom.Courses.list(optionalArgs);
var courses = response.courses;
if (courses && courses.length > 0) {
for (i = 0; i < courses.length; i++) {
var course = courses[i];
Logger.log('%s , %s , %s , %s ', course.name, course.id, course.ownerId, course.creationTime);
var id = course.id;
// the error "caller does not have permission" occurs here:
var coursework = Classroom.Courses.CourseWork.list(id)
var arr=[];
if (coursework && coursework.length > 0) {
for (k = 0; k < coursework.length; k++) {
var cw = coursework[k];
var ids = cw.id;
var user = cw.creatorUserId;
var type = cw.workType;
var ti = cw.title;
var des = cw.description;
var st = cw.state;
var sch = cw.scheduledTime;
var due = cw.dueDate;
Logger.log('%s , (%s) , %s , %s', user, ti, des, due);
}
}
}
}
}
答案 0 :(得分:0)
我目前正在制作一个需要做同样事情的脚本,我遇到了这个问题。
在Apps脚本编辑器菜单中,选择查看 - &gt;显示清单文件
这将打开一个名为 appsscript.json 的文件
在此文件中,添加JSON属性oauthScopes
并将其设置为一组授权请求URL,如下所示:
"oauthScopes": ["https://www.googleapis.com/auth/classroom.coursework.students.readonly",
"https://www.googleapis.com/auth/classroom.courses.readonly"
]
在此之后,我不得不将我的webapp重新发布为新版本并单击以接受新权限,但现在我可以获得特定学生的所有课程列表。
资源:
https://developers.google.com/classroom/guides/auth https://developers.google.com/classroom/guides/manage-coursework