我正在尝试使用google-apps-script创建google教室的扩展,但是我似乎遇到了权限问题-“呼叫者没有权限”。有人可以告诉我为什么会发生这种情况以及我需要做什么
我已尝试访问google cloud平台提供的所有库,希望其中之一提供所有必需的权限,但无济于事。
function listCourses() {
var optionalArgs = {
pageSize: 10
};
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)', course.name, course.id);
var submissions = Classroom.Courses.CourseWork.list(course.id, optionalArgs);
for (i = 0; i < submissions.length; i++) {
var submission = submissions[i];
Logger.log('%s', submission);
}
}
} else {
Logger.log('No courses found.');
}
}
该代码旨在列出特定课程中的课程ID
此解决方案涉及做两件事-
appsscript.json
)Code.gs
文件appsscript.json
)此任务的适当的Classroom API参考是here。
即使启用了[[Google高级服务...]后,您看起来也只会添加以下OAuth范围-
文件>项目属性>范围来查看它们。但是,当您从文档链接中的 Credentials> Google OAuth 2.0
查看并选中显示清单文件。在那里,您需要添加此代码,也许在依赖项下面-"oauthScopes": [
"https://www.googleapis.com/auth/classroom.courses",
"https://www.googleapis.com/auth/classroom.coursework.me.readonly",
"https://www.googleapis.com/auth/classroom.profile.emails",
"https://www.googleapis.com/auth/classroom.profile.photos",
"https://www.googleapis.com/auth/classroom.rosters",
"https://www.googleapis.com/auth/classroom.coursework.me",
"https://www.googleapis.com/auth/classroom.coursework.me.readonly",
"https://www.googleapis.com/auth/classroom.coursework.students",
"https://www.googleapis.com/auth/classroom.coursework.students.readonly"
],
注1:仅添加较新的4不会解决问题,因为脚本将仅假定这些,而不是最初运行脚本时自动填充的原始5。
注2:空行只是为了区分自动生成的作用域与需要手动添加的作用域(冗余)。
我的appsscript.json
文件看起来像这样;您的可能会有所不同-
{
"timeZone": "Asia/Kolkata",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Classroom",
"serviceId": "classroom",
"version": "v1"
}]
},
"oauthScopes": [
"https://www.googleapis.com/auth/classroom.courses",
"https://www.googleapis.com/auth/classroom.coursework.me.readonly",
"https://www.googleapis.com/auth/classroom.profile.emails",
"https://www.googleapis.com/auth/classroom.profile.photos",
"https://www.googleapis.com/auth/classroom.rosters",
"https://www.googleapis.com/auth/classroom.coursework.me",
"https://www.googleapis.com/auth/classroom.coursework.me.readonly",
"https://www.googleapis.com/auth/classroom.coursework.students",
"https://www.googleapis.com/auth/classroom.coursework.students.readonly"
],
"exceptionLogging": "STACKDRIVER"
}
任务2
Code.gs
文件function listCourses() {
var optionalArgs = {
pageSize: 10
};
var response = Classroom.Courses.list(optionalArgs);
var courses = response.courses;
if (courses && courses.length > 0) {
for (var i = 0; i < courses.length; i++) {
var course = courses[i];
Logger.log('%s (%s)', course.name, course.id);
var submissions = Classroom.Courses.CourseWork.list(course.id, optionalArgs);
for (var j = 0; j < submissions.courseWork.length; j++) {
var submission = submissions.courseWork[j];
Logger.log('%s', submission);
}
}
} else {
Logger.log('No courses found.');
}
}
希望这会有所帮助:),但我实际上不知道为什么这些范围不会自动添加,也许为此引发了Google问题。
编辑说明:纠正的语法错误