Google Apps脚本可上交,评分和返回Google课堂作业

时间:2018-01-27 20:09:34

标签: google-apps-script google-classroom

正如下面的评论中提到的,如果只有学生可以转入某些内容,那么即使尚未上传,我也需要能够评分并返回作业。为了澄清,使用API​​进行了分配,我可以控制班级和学生。

正如下面的其他评论所述,即使您没有返回作业,学生仍会看到指定成绩,这符合此问题的目标。因此,不需要使用“课堂API”对作业进行分级,也不需要使用回合和返回。

有几个类似于这个的问题,但不完整,似乎没有具体的答案,所以我会尝试尽可能具体。我需要能够强制转入学生的作业,即使他们还没有这样做,然后进行评分,然后返回。使用下面的脚本,我收到两个错误。

一,"收到无效的JSON有效负载。未知名称" assignment_submission":无法找到字段。 (第15行,文件" GRADES CLASSROOM")"即使这是在课堂参考(https://developers.google.com/classroom/reference/rest/v1/courses.courseWork.studentSubmissions)。

二,当我尝试使用"返回"方法,(第二行代码)它返回错误"之后缺少名称。运营商。 (第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"); 
} 

在下面的评论中,设置成绩的代码已经解决。我们只需要看看如何返回成绩。

1 个答案:

答案 0 :(得分:1)

简短回答

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

  2. 即使未使用patch提交,也可以对学生课程作业进行评分。

  3. 课程作业提交只有在首次启用时才能退回给学生
  4. 代码

    以下代码“成功”地将成绩添加到一名学生。此时,我能够验证drafGrade是否已在Web 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'  
        }
      );
    }
    

    在学生作业视图中,教师和学生可以看到已分配的同学

    Student work

    在提交视图

    上,老师可以看到draftGrade

    Submissions view

    注释

    我做了一些研究和测试,发现了一些“有趣的东西”

    错误消息

      

    “操作员后缺少名字。”(第17行,文件“GRADES CLASSROOM”)“

    看起来是由于在

    中使用return造成的

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

    参考:Google App Script

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

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

    但这要求相关学生提交课程,否则Classroom API会抛出失败的前提条件错误。

    <小时/> 我还没有完整的答案,但重要的是要记住,某些任务取决于可能是教师或学生的用户类角色,但不能同时取决于同一课程。

    因此,为了进行作业提交,应该代表相应的学生调用相应的方法,并且为了返回作业,应该代表班级老师进行调用。

    参考

    来自Method: courses.courseWork.studentSubmissions.turnIn

      

    这可能只有拥有指定学生提交的学生才能调用。

    来自Method: courses.courseWork.studentSubmiss.return

      

    只有包含所请求学生提交的课程的教师才可以使用此方法。