Définir et mettre à jour les notes

Ce guide fournit des exemples de code liés à la notation pour l'API Google Classroom. Consultez le guide sur les notes pour vous familiariser avec les concepts de notation dans Classroom.

Définir des notes pour les devoirs des élèves

La ressource StudentSubmission comporte deux champs pour stocker les notes : assignedGrade, qui correspond à la note communiquée aux élèves, et draftGrade, qui est une note provisoire visible uniquement par les enseignants. Ces champs sont mis à jour à l'aide de courses.courseWork.studentSubmissions.patch.

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;

Lorsque vous utilisez l'interface utilisateur de Classroom, vous ne pouvez pas attribuer une note tant que vous n'avez pas enregistré une note provisoire. La note attribuée peut ensuite être renvoyée à un élève. Votre application peut noter le devoir d'un élève de deux manières:

  • Attribuez uniquement le draftGrade. Cela permet, par exemple, à l'enseignant de vérifier 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 entièrement un devoir.

Lire les notes attribuées

Vous pouvez lister toutes les notes d'un élément de cours spécifique en explorant l'objet de réponse de la méthode courses.courseWork.studentSubmissions.list:

Python

response = coursework.studentSubmissions().list(
    courseId=course_id,
    courseWorkId=coursework_id,
    pageSize=10 # optionally include `pageSize` to restrict the number of student submissions included in the response.
).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());
  }
}

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. Consultez l'article du Centre d'aide sur la configuration de la notation pour obtenir des conseils sur ce calcul. La ressource Course inclut le champ gradebookSettings qui peut vous aider à effectuer les calculs.

Si vous souhaitez calculer la note globale, consultez quelques conseils à prendre en compte lorsque vous gérez les devoirs tardifs, justifiés et manquants.

Gérer l'état des réponses des élèves

Une réponse d'élève peut être annulée, remise ou rendue. Le champ d'état dans StudentSubmission indique l'état actuel. Pour modifier l'état, appelez l'une des méthodes suivantes:

Toutes ces méthodes acceptent un paramètre body vide, par exemple:

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

Pièces jointes du module complémentaire de notation

Si vous êtes développeur de modules complémentaires Classroom, vous pouvez définir des notes pour les pièces jointes de modules complémentaires individuelles 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 tutoriels sur les pièces jointes de type activité et sur le transfert de notes.