Impostare e aggiornare i voti

Questa guida fornisce esempi di codice relativi alla valutazione per l'API Classroom. Questo documento si concentra sul percorso principale di valutazione di Classroom: gestione degli stati StudentSubmission e dei voti.

Leggi la guida ai voti per acquisire familiarità con i concetti di valutazione in Classroom.

Gestisci gli stati di StudentSubmission

StudentSubmission può essere annullato l'invio, consegnato o restituito. Il campo state indica lo stato attuale. La classificazione viene in genere eseguita dopo che StudentSubmission si trova nello stato TURNED_IN.

Per modificare lo stato utilizzando l'API Classroom, chiama uno dei seguenti metodi:

Tutti questi metodi accettano un parametro body vuoto, come mostrato nell'esempio seguente:

Python

service.courses().courseWork().studentSubmission().turnIn(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    body={}).execute()

Java

classroom/snippets/src/main/java/ReturnStudentSubmission.java
try {
  service
      .courses()
      .courseWork()
      .studentSubmissions()
      .classroomReturn(courseId, courseWorkId, id, null)
      .execute();
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s), courseWorkId (%s), or studentSubmissionId (%s) does "
            + "not exist.\n",
        courseId, courseWorkId, id);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}

Impostare i voti per i contenuti inviati dagli studenti

La risorsa StudentSubmission ha due campi per memorizzare il voto complessivo per il lavoro CourseWork con valutazione:

  • draftGrade è un voto provvisorio visibile solo agli insegnanti.
  • assignedGrade è il voto comunicato agli studenti.

Questi campi vengono aggiornati utilizzando courses.courseWork.studentSubmissions.patch, come mostrato nell'esempio seguente:

Python

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

service.courses().courseWork().studentSubmissions().patch(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    updateMask='assignedGrade,draftGrade',
    body=studentSubmission).execute()

Java

classroom/snippets/src/main/java/PatchStudentSubmission.java
StudentSubmission studentSubmission = null;
try {
  // Updating the draftGrade and assignedGrade fields for the specific student submission.
  StudentSubmission content =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .get(courseId, courseWorkId, id)
          .execute();
  content.setAssignedGrade(90.00);
  content.setDraftGrade(80.00);

  // The updated studentSubmission object is returned with the new draftGrade and assignedGrade.
  studentSubmission =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .patch(courseId, courseWorkId, id, content)
          .set("updateMask", "draftGrade,assignedGrade")
          .execute();

  /* Prints the updated student submission. */
  System.out.printf(
      "Updated student submission draft grade (%s) and assigned grade (%s).\n",
      studentSubmission.getDraftGrade(), studentSubmission.getAssignedGrade());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s), courseWorkId (%s), or studentSubmissionId (%s) does "
            + "not exist.\n",
        courseId, courseWorkId, id);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return studentSubmission;

Quando lavorano con la UI di Classroom, gli insegnanti non possono impostare un assignedGrade finché non hanno prima salvato un draftGrade. Il assignedGrade può quindi essere restituito a uno studente. La tua applicazione può valutare il compito di uno studente in due modi:

  • Assegna solo draftGrade. Ciò è utile, ad esempio, per consentire all'insegnante di rivedere manualmente i voti prima di finalizzarli. Gli studenti non possono vedere i voti in bozza.

  • Assegna sia draftGrade che assignedGrade per valutare completamente un compito.

Utilizza l'argomento updateMask per configurare il campo da impostare.

Consulta Aggiungere allegati alla risposta di uno studente per comprendere gli ambiti e le autorizzazioni necessari per modificare StudentSubmissions.

Leggere i voti assegnati

Puoi accedere a tutti i voti per un determinato CourseWork utilizzando il metodo courses.courseWork.studentSubmissions.list per recuperare tutti i StudentSubmissions corrispondenti e ispezionare i campi assignedGrade e draftGrade appropriati:

Python

response = coursework.studentSubmissions().list(
    courseId=course_id,
    courseWorkId=coursework_id,
    # optionally include `pageSize` to restrict the number of student
    # submissions included in the response.
    pageSize=10
).execute()
submissions.extend(response.get('studentSubmissions', []))

if not submissions:
    print('No student submissions found.')

print('Student Submissions:')

for submission in submissions:
    print(f"Submitted at:"
          f"{(submission.get('userId'), submission.get('assignedGrade'))}")

Java

classroom/snippets/src/main/java/ListStudentSubmissions.java
  ListStudentSubmissionsResponse response =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .list(courseId, courseWorkId)
          .setPageToken(pageToken)
          .execute();

  /* Ensure that the response is not null before retrieving data from it to avoid errors. */
  if (response.getStudentSubmissions() != null) {
    studentSubmissions.addAll(response.getStudentSubmissions());
    pageToken = response.getNextPageToken();
  }
} while (pageToken != null);

if (studentSubmissions.isEmpty()) {
  System.out.println("No student submissions found.");
} else {
  for (StudentSubmission submission : studentSubmissions) {
    System.out.printf(
        "User ID %s, Assigned grade: %s\n",
        submission.getUserId(), submission.getAssignedGrade());
  }
}

Consulta Recuperare le risposte degli studenti per comprendere gli ambiti e le autorizzazioni richiesti per leggere StudentSubmissions.

Determinare i voti complessivi del corso

L'API Classroom non consente agli sviluppatori di leggere o scrivere il voto complessivo del corso, ma puoi calcolarlo in modo programmatico. Se vuoi calcolare il voto complessivo, leggi la Guida ai voti per comprendere concetti importanti come l'assenza giustificata CourseWork, i periodi di valutazione e i diversi sistemi di valutazione.

Valutare gli allegati dei componenti aggiuntivi

Se sei uno sviluppatore di componenti aggiuntivi di Classroom, puoi impostare i voti per i singoli allegati dei componenti aggiuntivi e configurare il voto in modo che sia visibile agli insegnanti quando esaminano il lavoro degli studenti. Per ulteriori informazioni, consulta le guide dettagliate su Allegati di tipo attività e Trasferimento dei voti.

Voti delle griglie

StudentSubmissions hanno campi che rappresentano i punteggi assegnati in base a Rubrics:

  • draftRubricGrade è un insieme provvisorio di punteggi Criterion visibili solo agli insegnanti.
  • assignedRubricGrade è l'insieme dei punteggi Criterion comunicati agli studenti.

I punteggi della rubrica non possono essere impostati utilizzando l'API Google Classroom, ma possono essere letti. Per saperne di più, consulta la guida alle rubriche e le limitazioni.