Google 用于上交、评分和 return Google 课堂作业的 Apps 脚本

Google Apps Script to turn in, grade, and return a Google Classroom Assignment

正如下面评论中提到的,如果只有学生可以上交一些东西,那么即使作业尚未上交,我也需要能够对其进行评分和 return然而。澄清一下,作业是用 API 完成的,我可以控制 class 和学生。

正如下面附加评论中提到的,即使您没有 return 作业,学生仍然会看到分配的成绩,这就实现了这个问题的目标。因此,使用课堂 API.

为作业评分不需要上交和 return

有几个问题与这个问题类似,但不够完整,而且 none 似乎有具体的答案,所以我会尝试尽可能具体。我需要能够强制上交学生的作业,即使他们还没有这样做,然后打分,然后是 return。使用下面的脚本,我收到两个错误。

一,"Invalid JSON payload received. Unknown name "assignment_submission“:找不到字段。(第 15 行,文件 "GRADES CLASSROOM")”,即使这在课堂参考中 (https://developers.google.com/classroom/reference/rest/v1/courses.courseWork.studentSubmissions) .

第二,当我尝试使用 "return" 方法时,(代码的倒数第二行)它 return 出现错误“. 运算符后缺少名称。(第 17 行,文件 "GRADES CLASSROOM")" 当我尝试保存代码时,迫使我在保存之前将其注释掉。我认为很多人一直在寻找如何设置此过程的答案。

function returnGrade () {
 var submit ={assignedGrade: 80}; 
 var upDate = {updateMask: 'assignedGrade'};

 var resource1 = {
   assignmentSubmission: {
     addAttachments: [{
       link:{
         url: "URL"
            },
     }],
   },
};

// Classroom.Courses.CourseWork.StudentSubmissions.turnIn(resource1, COURSE ID, WORK ID, "EMAIL"); 
 Classroom.Courses.CourseWork.StudentSubmissions.patch(submit, COURSE ID, WORK ID, "EMAIL", upDate);
 // Classroom.Courses.CourseWork.StudentSubmissions.return(resource1, COURSE ID, WORK ID, "EMAIL"); 
} 

在下面的评论中,设置等级的代码已解决。我们只需要看看如何return 等级。

简答

  1. 课程作业提交(作业、问题)只能由学生或使用他们的证书完成。我们可以为此使用 OAuth,但是如果您不想使用 OAuth,则可以使用学生帐户提交课程作业,换句话说,使用学生帐户创建一个 运行 的函数并制作另一个功能是使用教师/域管理员帐户进行补丁/return操作。

  2. 即使未使用 patch.

  3. 提交,也可以对学生提交的课程作业进行评分
  4. 课程作业提交只能return如果学生先转

代码

以下代码将成绩添加到一名学生 "successfully"。这时我能够验证 drafGrade 是否在网络上正确注册 UI.

function doPatch(){
  var courseId = '6915813348';
  var courseWorkId = '11297534926';
  var studentSubmissions = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, courseWorkId,{'userId':'someone@gmail.com'});
  var id = studentSubmissions['studentSubmissions'][0].id;

  var studentSubmission = {  
    'assignedGrade': 99,  
    'draftGrade': 80  
  }  

  Classroom.Courses.CourseWork.StudentSubmissions.patch(  
    studentSubmission,
    courseId,
    courseWorkId,
    id,
    {
      'updateMask':'assignedGrade,draftGrade'  
    }
  );
}

分配的成绩在学生作业视图中对教师和学生可见

老师在提交视图中可以看到草稿成绩

注释

我做了一些研究和测试,发现了一些"interesting things"

错误信息

"Missing name after . operator. (line 17, file "GRADES CLASSROOM")"

看起来是由于在

中使用了 return

Classroom.Courses.CourseWork.StudentSubmissions.return(resource1, COURSE ID, WORK ID, "EMAIL");

参考:

错误发生是因为 return 是一个 JavaScript 关键字。替代语法是

Classroom.Courses.CourseWork.StudentSubmissions["return"](resource1, COURSE ID, WORK ID, "EMAIL")

但这需要相关学生提交课程作业,否则课堂 API 将抛出前提条件失败错误。


我还没有完整的答案,但重要的是要记住,某些任务取决于用户 class 角色,对于同一门课程,可以是老师或学生,但不能同时是两者。

因此,为了提交作业,应该以某种方式代表相应的学生调用相应的方法,为了 return 作业,应该以某种方式代表 class 老师调用.

参考资料

来自 Method: courses.courseWork.studentSubmissions.turnIn

This may only be called by the student that owns the specified student submission.

来自 Method: courses.courseWork.studentSubmiss.return

Only a teacher of the course that contains the requested student submission may call this method.