Définir et mettre à jour les notes

Ce guide fournit des exemples de code liés à la notation pour l'API Classroom. Ce document se concentre sur le parcours de notation de base dans Classroom : la gestion des états StudentSubmission et des notes.

Consultez le guide sur les notes pour vous familiariser avec les concepts de notation dans Classroom.

Gérer les états des devoirs des élèves

L'StudentSubmission peut être annulé, remis ou renvoyé. Le champ state indique l'état actuel. La notation est généralement effectuée une fois que StudentSubmission est à l'état TURNED_IN.

Pour modifier l'état à l'aide de l'API Classroom, appelez l'une des méthodes suivantes :

Toutes ces méthodes acceptent un paramètre body vide, comme illustré dans l'exemple suivant :

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;
}

Attribuer des notes aux devoirs rendus par les élèves

La ressource StudentSubmission comporte deux champs permettant de stocker la note globale des CourseWork notés :

  • draftGrade est une note provisoire visible uniquement par les enseignants.
  • assignedGrade correspond à la note communiquée aux élèves.

Ces champs sont mis à jour à l'aide de courses.courseWork.studentSubmissions.patch, comme illustré dans l'exemple suivant :

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;

Lorsqu'ils utilisent l'interface utilisateur Classroom, les enseignants ne peuvent pas définir de assignedGrade tant qu'ils n'ont pas enregistré de draftGrade. Le assignedGrade peut ensuite être rendu à un élève. Votre application peut noter le devoir d'un élève de deux manières :

  • Attribuez uniquement le draftGrade. Cela peut être utile, par exemple, pour permettre à l'enseignant d'examiner manuellement les notes avant de les finaliser. Les élèves ne peuvent pas voir les notes provisoires.

  • Attribuez à la fois draftGrade et assignedGrade pour noter complètement un devoir.

Utilisez l'argument updateMask pour configurer le champ à définir.

Consultez Ajouter des pièces jointes à une réponse d'élève pour comprendre les champs d'application et les autorisations requises pour modifier StudentSubmissions.

Lire les notes attribuées

Vous pouvez accéder à toutes les notes d'un CourseWork spécifique en utilisant la méthode courses.courseWork.studentSubmissions.list pour récupérer tous les StudentSubmissions correspondants et en inspectant les champs assignedGrade et draftGrade appropriés :

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());
  }
}

Consultez Récupérer les réponses des élèves pour comprendre les niveaux d'accès et les autorisations requises pour lire StudentSubmissions.

Déterminer les notes globales du cours

L'API Classroom ne permet pas aux développeurs de lire ni d'écrire la note globale du cours, mais vous pouvez la calculer de manière programmatique. Si vous souhaitez calculer la note globale, consultez le guide sur les notes pour comprendre les concepts importants tels que les CourseWork, les périodes de notation et les différents systèmes de notation.

Noter les pièces jointes de modules complémentaires

Si vous êtes développeur de modules complémentaires Classroom, vous pouvez définir des notes pour les pièces jointes individuelles des modules complémentaires et configurer la note pour qu'elle soit visible par les enseignants lorsqu'ils examinent le travail des élèves. Pour en savoir plus, consultez les procédures pas à pas Pièces jointes de type activité et Renvoyer les notes.

Notes des grilles d'évaluation

StudentSubmissions comporte des champs qui représentent les scores attribués en fonction de Rubrics :

  • draftRubricGrade est un ensemble provisoire de Criterion notes visibles uniquement par les enseignants.
  • assignedRubricGrade correspond à l'ensemble des scores Criterion communiqués aux élèves.

Il est impossible de définir des notes de grille d'évaluation à l'aide de l'API Google Classroom, mais il est possible de les lire. Pour en savoir plus, consultez le guide sur les rubriques et les limites.