Noten festlegen und aktualisieren

In dieser Anleitung finden Sie Codebeispiele zur Benotung für die Classroom API. Der Schwerpunkt dieses Dokuments liegt auf dem Kernprozess der Benotung in Classroom: der Verwaltung von StudentSubmission Status und Noten.

Lesen Sie die Anleitung zu Noten, um sich mit den Benotungskonzepten in Classroom vertraut zu machen.

`StudentSubmission`-Status verwalten

StudentSubmission kann den Status „Nicht abgegeben“, „Abgegeben“ oder „Zurückgegeben“ haben. Das Feld state gibt den aktuellen Status an. Die Benotung erfolgt in der Regel, nachdem sich StudentSubmission im Status TURNED_IN befindet.

Wenn Sie den Status mit der Classroom API ändern möchten, rufen Sie eine der folgenden Methoden auf:

Alle diese Methoden akzeptieren einen leeren body-Parameter, wie im folgenden Beispiel gezeigt:

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

Noten für Schüler-/Studentenarbeiten festlegen

Die StudentSubmission-Ressource enthält zwei Felder zum Speichern der Gesamtnote für benotete CourseWork-Aufgaben:

  • draftGrade ist eine vorläufige Note, die nur für Kursleiter sichtbar ist.
  • assignedGrade ist die Note, die den Schülern oder Studenten mitgeteilt wird.

Diese Felder werden mit courses.courseWork.studentSubmissions.patch aktualisiert, wie im folgenden Beispiel gezeigt:

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;

Wenn Kursleiter mit der Classroom-UI arbeiten, können sie erst dann eine assignedGrade festlegen, wenn sie zuerst eine draftGrade gespeichert haben. Die assignedGrade kann dann an einen Schüler oder Studenten zurückgegeben werden. Ihre Anwendung kann die Aufgabe eines Schülers oder Studenten auf zwei Arten benoten:

  • Weisen Sie nur die draftGrade zu. Dies ist beispielsweise nützlich, wenn die Lehrkraft die Noten manuell überprüfen möchte, bevor sie sie abschließt. Schüler und Studenten können keine Notenentwürfe sehen.

  • Weisen Sie sowohl die draftGrade als auch die assignedGrade zu, um eine Aufgabe vollständig zu benoten.

Mit dem Argument updateMask können Sie konfigurieren, welches Feld festgelegt werden soll.

Unter Anhänge zu einer Schüler-/Studentenantwort hinzufügen finden Sie Informationen zu den Bereichen und Berechtigungen , die zum Ändern von StudentSubmissions erforderlich sind.

Zugewiesene Noten lesen

Sie können auf alle Noten für eine bestimmte CourseWork zugreifen, indem Sie mit der courses.courseWork.studentSubmissions.list Methode alle entsprechenden StudentSubmissions abrufen und die entsprechenden assignedGrade und draftGrade Felder prüfen:

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

Unter Schüler-/Studentenantworten abrufen finden Sie Informationen zu den Bereichen und Berechtigungen, die zum Lesen von StudentSubmissions erforderlich sind.

Gesamtkursnoten bestimmen

Mit der Classroom API können Entwickler die Gesamtkursnote nicht lesen oder schreiben, aber Sie können sie programmatisch berechnen. Wenn Sie die Gesamtnote berechnen möchten, lesen Sie die Anleitung zu Noten, um wichtige Konzepte wie entschuldigte CourseWork, Benotungszeiträume und die verschiedenen Benotungssysteme zu verstehen.

Add-on-Anhänge benoten

Wenn Sie ein Entwickler von Classroom-Add-ons sind, können Sie Noten für einzelne Add-on-Anhänge festlegen und konfigurieren, dass die Note für Kursleiter sichtbar ist, wenn sie die Arbeit von Schülern oder Studenten überprüfen. Weitere Informationen finden Sie in den Schritt-für-Schritt-Anleitungen Anhänge vom Typ „Aktivität“ und Notenrückgabe.

Bewertungsschema-Noten

StudentSubmissions haben Felder, die auf Rubrics basierende Noten darstellen:

  • draftRubricGrade ist eine vorläufige Reihe von Criterion-Noten, die nur für Kursleiter sichtbar sind.
  • assignedRubricGrade ist die Reihe von Criterion-Noten, die den Schülern oder Studenten mitgeteilt wird.

Bewertungsschema-Noten können nicht mit der Google Classroom API festgelegt, aber gelesen werden. Weitere Informationen finden Sie in der Anleitung zu Bewertungsschemata und den Einschränkungen.