我可以使用Google Classroom API对“以学生身份登录”的作业进行评分吗?

问题描述

我有一个使用Google Classroom API的应用程序。当与老师联系时,我可以创建课程作业和作业。以学生身份连接后,我可以列出我的作业,也可以上交特定作业。

我正在使用REST API: https://developers.google.com/classroom/reference/rest

(以学生身份登录),我上交作业,但我想写一份草稿成绩。

我知道我是否可以以老师的身份登录,但是我可以设置成绩,但是我想要的应用是基于一些特定的内置逻辑来计算成绩的草稿,因此老师不必在自己的老师上做每个学生都有。

根据文档,“ draftGrade”和“ assignedGrade”都只能由教师进行更新。 https://developers.google.com/classroom/reference/rest/v1/courses.courseWork.studentSubmissions#StudentSubmission

关于如何自动设置提交成绩的任何想法?

解决方法

我认为这是不可能的:您无法使用学生权限来更新draftGrade。

您可以做什么:

  1. 在“学生”会话中,您将草稿成绩与提交ID关联保存在应用程序数据库中。
  2. 从“老师”会话中获得相应的“老师”权限,然后从应用程序数据库中获得成绩,然后我调用Path查询来设置draftGrade。

第2步的某些代码(使用GoogleAPIClientForREST,为Swift):

    func executeQuery_GradeSubmission(studentSubmission: GTLRClassroom_StudentSubmission) -> GTLRServiceTicket? {
        guard let courseID = self.myClassroom?.courseID,let courseWorkID = self.selectedCourseWorkID else { return nil }

        if let grade = self.gradesForSelectedWorkID?[studentSubmission.identifier!] {
            studentSubmission.draftGrade = NSNumber(floatLiteral: Double(grade))
        }
        
        let query = GTLRClassroomQuery_CoursesCourseWorkStudentSubmissionsPatch.query(withObject: studentSubmission,courseId: courseID,courseWorkId: courseWorkID,identifier: studentSubmission.identifier!)
        query.updateMask = "draftGrade"
        return self.myClassroom?.service.executeQuery(query,delegate: self,didFinish: #selector(displayGradeSubmissionResult(ticket:finishedWithObject:error:)))
    }
    
    @objc func displayGradeSubmissionResult(ticket: GTLRServiceTicket,finishedWithObject: GTLRObject,error: Any?){
        let classroomSubmissionResponse = finishedWithObject as? GTLRClassroom_StudentSubmission
        
        if let classroomError = error as? NSError {
            print("displayGradeSubmissionResult. ERROR: \(classroomError.description)")
            // TODO: inform something went wrong
        } else {
            if let submissionItems = self.classroomSubmissionsResponse?.studentSubmissions {
                for submissionItem in submissionItems {
                    if submissionItem.identifier == classroomSubmissionResponse?.identifier {
                        submissionItem.draftGrade = classroomSubmissionResponse?.draftGrade
                    }
                }
            }
        }
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...