Это решение включает в себя две вещи:
- Обновление файла манифеста (
appsscript.json
) - Обновление файла
Code.gs
Задача1
Обновление файла манифеста (appsscript.json
)
Соответствующая ссылка Classroom API для этой задачи: здесь .
Похоже, даже после включения Расширенные службы Google ... , добавляются только следующие области действия OAuth -
Вы можете просмотреть их, перейдя к Файл> Свойства проекта> Области действия .
Однако, если вы попробуете API из ссылки на документацию, на вкладке Учетные данные> Google OAuth 2.0 , он показывает еще 4 совершенно разные области OAuth;это следующие параметры:
Вам необходимо добавить все 8 из них вручную в файл манифеста скрипта Apps. Для этого перейдите к Просмотр и проверьте Показать файл манифеста . Там вам нужно добавить этот код, возможно, ниже зависимости -
"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.
Редактировать заметку: Исправленные грамматические ошибки