我已经能够使用谷歌脚本将一些数据从谷歌教室移动到电子表格。特别是在课堂课程或课程中的任何内容。当我尝试访问课程中的东西时,我收到了权限错误。
(方法listAssigments工作正常需要细化工作缓慢) (方法listGrades给出var提交的权限错误)
我在开始时已经设置了API,但没有添加任何其他授权。
我最初认为这是因为我在Google教室中创建了它,但是当我使用网站https://developers.google.com/classroom/reference/rest/v1/courses.courseWork.studentSubmissions/list时尝试这很好。当我将请求直接发送到网络时,我再次收到错误。
我知道它可以使用几个附加组件获取信息,但我找不到任何不是python的示例代码。我正在尝试制作一个简单的电子表格,根据我的成绩簿对我的成绩进行排序。任何工作都可以。虽然我希望能够将成绩推回谷歌。在课堂上添加参与点的速度非常慢,我宁愿复制并更改任何异常或粘贴另一个电子表格的等级。
我会添加代码以防它有用,但我相信它必须是某种额外的身份验证或提供或添加所需的权限。
function listGrades(courseWorkId, course) {
var courseId = course.id
var ss = SpreadsheetApp.getActive().getSheetByName(course.name);
var submissions = Classroom.Courses.CourseWork.StudentSubmissions.list(4140802199, 4801051201);
var grade = submissions.studentSubmissions[0].assignedGrade
}
function listAssigments(course) {
var courseId = course.id
var courseWork = Classroom.Courses.CourseWork.list(courseId).courseWork
var ss = SpreadsheetApp.getActive().getSheetByName(course.name);
for(var i = 0; i < courseWork.length; i++) {
var tittle = courseWork[i].title
var points = courseWork[i].creationTime
var id = courseWork[i].id
var id = courseWork[i]
ss.getRange(2, i+5).setValue(tittle);
ss.getRange(3, i+5).setValue(points);
ss.getRange(1, i+5).setValue(id);
}
答案 0 :(得分:0)
好的,我认为这是Google Apps脚本的错误。
Google Apps脚本应该通过在执行代码之前扫描代码来自动确定正确的权限。使用Classroom.Courses.CourseWork.list
获取学生的课程需要https://www.googleapis.com/auth/classroom.coursework.students
范围。
但是,如果您将此请求添加到您的代码中,然后转到文件,项目属性,范围,那么您就可以了看到只授予https://www.googleapis.com/auth/classroom.coursework.me
。
我能够通过在我的代码中添加对Classroom.Courses.CourseWork.remove(courseId, id)
的随机调用来解决此问题(您可以将其注释掉,以便它实际上 调用... Google Apps脚本会检查已注释掉的代码,以确定正确的范围。 Google Apps脚本正确地检测到了此请求,并授予了正确的权限。
我会向Google报告错误,看看他们是否可以重现我们遇到的同样问题...
答案 1 :(得分:0)
我从另一篇文章中找到了解决方法。我没有足够高的分数来发布那里。
function createCoursework (id) {
Classroom.Courses.CourseWork.create(id,
{ // doesn't work but triggers permissions correctly
"courseId": id,
"title": 'foo',
"description": 'desc',
});
}
正如Tom Hinkle所说。它不起作用,但它确实触发了访问数据所需的授权。