Google Classroom API - Как автоматически оценить ученика (assidnedGrade / draftGrade) из приложения после завершения теста - PullRequest
0 голосов
/ 11 апреля 2020

с помощью API Google Classroom я могу отправить тест (10 вопросов) учащемуся как прикрепленную ссылку в задании из учительского аккаунта.

ученик откроет ссылку, чтобы выполнить тест, после того, как учащийся завершил sh тест, который система рассчитает для оценки, например, 8 из 10 верны, поэтому оценка равна 8 и будет использоваться в качестве назначенной оценки.

Каков правильный поток / способ использования API класса Google для автоматического обновления назначенного класса для представления учащегося в классе Google без учителя вручную оценивает поступление ученика.


    var courseId = '<the-courseid-is-read-from-database>';
    var courseWorkId = '<the-course-work-id-is-read-from-database>';
    var studentSubmissionsId = '';

    function handleClientLoad() {
        gapi.load('client:auth2', initClient);
    }

    function initClient() {
        gapi.client.init({
            apiKey: API_KEY,
            clientId: CLIENT_ID,
            discoveryDocs: DISCOVERY_DOCS,
            scope: SCOPES
        }).then(function () {
            // Listen for sign-in state changes.
            gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
            // Handle the initial sign-in state.
            updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
        }, function(error) {
            alert(JSON.stringify(error, null, 2));
        });
    }

    function updateSigninStatus(isSignedIn) {

        if (isSignedIn) {
            LoadStudentSubmission();
        } else {
            gapi.auth2.getAuthInstance().signIn();
        }
    }

    //---------------------------------------------------------------
    // this part help get the studentSubmissionId
    //---------------------------------------------------------------   
    gapi.client.classroom.courses.courseWork.studentSubmissions.list({
        courseId: courseId,
        courseWorkId: courseWorkId
    }).then(function(response) {

        var studentSubmissions = response.result.studentSubmissions;

        if (studentSubmissions.length > 0) {
            for (i = 0; i < studentSubmissions.length; i++) {
                var studentSubmission = studentSubmissions[i];
                studentSubmissionsId = studentSubmission.id;
            }
        } else {
            alert("Not allow");
        }
    });



    //---------------------------------------------------------------
    ///this part is call after the student have finish the test
    //---------------------------------------------------------------

    var studentSubmission = {
        courseId: courseId,
        courseWorkId: courseWorkId,
        id: studentSubmissionsId,
        updateMask: 'assignedGrade,draftGrade',
        assignedGrade: 8,
        draftGrade: 8,              
        assignmentSubmission: {
            "attachments": [
                {'link': { 'url': 'http://localhost/quiz?code=xxxxx-xxxxxx-xxxxx-xxxx' }}
                ]
            }
        };

    gapi.client.classroom.courses.courseWork.studentSubmissions.patch(
        studentSubmission                               
    ).then(function(response) {
        alert('Submited');
    });


    //---------------------------------------------------------------
    ///this is what return
    //---------------------------------------------------------------
    {
      "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
      }
    }

...