Impostare e aggiornare i voti

Questa guida fornisce esempi di codice relativi alla valutazione per l'API Classroom. L'obiettivo di questo documento è illustrare il percorso di valutazione di Classroom: la gestione degli stati e dei voti StudentSubmission.

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

Gestire gli stati di StudentSubmission

StudentSubmission potrebbe non essere stato inviato, consegnato o restituito. Il campo state indica lo stato corrente. La valutazione viene in genere eseguita dopo che StudentSubmission è 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, 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 valutato:

  • draftGrade è un voto provvisorio visibile solo agli insegnanti.
  • assignedGrade è il voto riportato 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 utilizzano l'interfaccia utente di Classroom, gli insegnanti non possono impostare un assignedGrade finché non hanno 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. Questa opzione è utile, ad esempio, per consentire all'insegnante di rivedere manualmente i voti prima di finalizzarli. Gli studenti non possono vedere i voti provvisori.

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

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

Consulta Aggiungere allegati a una risposta dello studente per conoscere gli ambiti e le autorizzazioni necessarie 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 StudentSubmissions corrispondenti e ispezionando 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 conoscere gli ambiti e le autorizzazioni necessarie 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, consulta la guida ai voti per comprendere concetti importanti come i casi di esenzione 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 i lavori degli studenti. Per saperne di più, consulta le procedure dettagliate relative agli allegati dei tipi di attività e al trasferimento dei voti.

Voti delle griglie

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

  • draftRubricGrade è un insieme provvisorio di voti Criterion visibili solo agli insegnanti.
  • assignedRubricGrade è l'insieme di punteggi Criterion segnalati 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.