Noten festlegen und aktualisieren

Dieser Leitfaden enthält Codebeispiele für die Classroom API, die sich auf die Benotung beziehen. Der Schwerpunkt dieses Dokuments liegt auf dem Kernprozess der Classroom-Bewertung: der Verwaltung von StudentSubmission-Status und Noten.

Lesen Sie den Leitfaden zu Noten, um sich mit den Konzepten für die Notenvergabe in Classroom vertraut zu machen.

Status von Schüler-/Studentenaufgaben verwalten

StudentSubmission kann zurückgezogen, abgegeben oder zurückgegeben werden. Das Feld state gibt den aktuellen Status an. Die Benotung erfolgt in der Regel, nachdem sich die 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 Aufgaben von Schülern/Studenten festlegen

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

  • draftGrade ist eine vorläufige Note, die nur für Lehrkräfte sichtbar ist.
  • assignedGrade ist die Note, die den Schülern/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 Lehrkräfte die Classroom-Benutzeroberfläche verwenden, können sie erst eine assignedGrade festlegen, nachdem sie 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. Das ist z. B. nützlich, wenn der Lehrer die Noten manuell überprüfen möchte, bevor er sie endgültig festlegt. Schüler und Studenten können keine Notenentwürfe sehen.

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

Mit dem Argument updateMask wird konfiguriert, welches Feld festgelegt werden soll.

Unter Einer Schülerantwort Anhänge hinzufügen finden Sie Informationen zu den Bereichen und Berechtigungen, die zum Ändern von StudentSubmissions erforderlich sind.

Zugewiesene Noten lesen

Mit der Methode courses.courseWork.studentSubmissions.list können Sie alle Noten für ein bestimmtes CourseWork abrufen, indem Sie alle entsprechenden StudentSubmissions abrufen und die entsprechenden Felder assignedGrade und draftGrade 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 Antworten von Schülern und Studenten abrufen finden Sie Informationen zu den Bereichen und Berechtigungen, die zum Lesen von StudentSubmissions erforderlich sind.

Gesamtnote für den Kurs ermitteln

Mit der Classroom API können Entwickler die Gesamtnote eines Kurses nicht lesen oder schreiben, aber sie lässt sich programmatisch berechnen. Wenn Sie die Gesamtnote berechnen möchten, lesen Sie den Leitfaden für Noten. Dort werden wichtige Konzepte wie CourseWork (entschuldigt), Notenzeiträume und die verschiedenen Notensysteme erläutert.

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 Lehrkräfte sichtbar ist, wenn sie die Aufgaben von Schülern/Studenten überprüfen. Weitere Informationen finden Sie in den Anleitungen zu Anhängen vom Aktivitätstyp und Rückgabe von Noten.

Noten für Bewertungsschemas

StudentSubmissions haben Felder, die auf Rubrics basierende Werte darstellen:

  • draftRubricGrade ist eine vorläufige Gruppe von Criterion-Ergebnissen, die nur für Lehrkräfte sichtbar sind.
  • assignedRubricGrade ist die Menge der Criterion-Scores, die Schülern und Studenten gemeldet werden.

Rubrikbewertungen können nicht über die Google Classroom API festgelegt, aber gelesen werden. Weitere Informationen finden Sie im Leitfaden für Rubriken und unter Einschränkungen.