从Google课堂作为域管理员检索课程作业资源时的权限错误

时间:2018-04-25 15:21:57

标签: google-apps-script google-classroom

我有一个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);
        }
      }
    }
  }
}

1 个答案:

答案 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