Die Classroom-Benutzeroberfläche unterstützt fünf Arten von Kursaufgaben: Aufgaben, Quizaufgaben, Kurzantwort-Fragen, Multiple-Choice-Fragen und Materialien. Die Classroom API unterstützt derzeit drei dieser Typen, die für die API als CourseWorkType
bezeichnet werden: Aufgaben, Kurzantwort-Fragen und Multiple-Choice-Fragen.
Für diese Funktion können Sie die Kurs-Ressource verwenden. Sie stellt eine Aufgabe oder Frage dar, die Schülern oder Studenten in einem bestimmten Kurs zugewiesen wurde, einschließlich zusätzlicher Materialien und Details wie Abgabetermin oder maximaler Punktzahl.
Neben der Ressource „Kursarbeit“ können Sie abgeschlossene Aufgaben auch mit der Ressource StudentSubmission
verwalten. In den folgenden Abschnitten werden diese ausführlich beschrieben.
Aufgaben erstellen
Aufgaben können nur im Namen des Kursleiters erstellt werden. Wenn Sie versuchen, im Namen eines Kursteilnehmers Aufgaben in einem Kurs zu erstellen, wird der Fehler 403 PERMISSION_DENIED
angezeigt. Ebenso können Domainadministratoren keine Zuweisungen für Kurse erstellen, die sie nicht leiten. Wenn Sie dies über die API tun, wird außerdem der Fehler 403 PERMISSION_DENIED
zurückgegeben.
Wenn Sie Zuweisungen mit der Methode courses.courseWork.create
erstellen, können Sie Links als materials
anhängen, wie im Beispielcode unten gezeigt:
Java
Python
Das Ergebnis enthält eine vom Server zugewiesene Kennung, mit der in anderen API-Anfragen auf die Zuweisung verwiesen werden kann.
Wenn Sie verknüpfte Aufgaben in eine Aufgabe einbinden möchten, die über die Classroom API erstellt wurde, verwenden Sie eine Linkressource und geben Sie die Ziel-URL an. Classroom ruft den Titel und das Thumbnail automatisch ab. Die Classroom API unterstützt außerdem Google Drive- und YouTube-Materialien, die auf ähnliche Weise in eine DriveFile-Ressource oder eine YouTubeVideo-Ressource aufgenommen werden können.
Wenn Sie ein Fälligkeitsdatum festlegen möchten, legen Sie für die Felder dueDate
und dueTime
die entsprechende UTC-Zeit fest. Das Fälligkeitsdatum muss in der Zukunft liegen.
Aufgaben und Fragen abrufen
Sie können Aufgaben und Fragen für Schüler/Studenten und Lehrkräfte des entsprechenden Kurses oder von einem Domainadministrator abrufen. Rufen Sie mit „courses.courseWork.get“ eine bestimmte Aufgabe oder Frage ab. Verwenden Sie „courses.courseWork.list“, um alle Zuweisungen oder Fragen abzurufen (optional, die bestimmten Kriterien entsprechen).
Der erforderliche Bereich hängt von der Rolle ab, die der anfragende Nutzer im Kurs hat. Wenn der Nutzer Student ist, verwenden Sie einen der folgenden Bereiche:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Wenn der Nutzer eine Lehrkraft oder ein Domainadministrator ist, verwenden Sie einen der folgenden Bereiche:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Die Berechtigung zum Abrufen einer Aufgabe oder Frage impliziert keine Berechtigung für den Zugriff auf Materialien oder Materialmetadaten. In der Praxis bedeutet das, dass ein Administrator den Titel einer angehängten Drive-Datei möglicherweise nicht sieht, wenn er kein Teilnehmer des Kurses ist. Wenn Sie Administratoren Zugriff auf Nutzerdateien gewähren möchten, finden Sie entsprechende Informationen unter Domainweite Delegierung.
Antworten von Schülern oder Studenten verwalten
Eine Ressource vom Typ StudentSubmission
stellt die Aufgabe und Note eines Schülers/Studenten für eine Aufgabe oder Frage dar. Eine StudentSubmission
-Ressource wird implizit für jeden Schüler/Studenten erstellt, wenn eine neue Frage oder Aufgabe erstellt wird.
In den folgenden Abschnitten werden häufige Aktionen beschrieben, mit denen Antworten von Schülern oder Studenten verwaltet werden.
Antworten von Schülern oder Studenten abrufen
Schüler und Studenten können ihre eigenen abgegebenen Aufgaben abrufen, Lehrkräfte können abgegebene Aufgaben für alle Lernenden in ihren Kursen abrufen und Domain-Administratoren können alle abgegebenen Aufgaben von allen Schülern oder Studenten in ihrer Domain abrufen. Jeder abgegebene Schüler erhält eine Kennung. Wenn Sie sie kennen, können Sie sie mit courses.courseWork.studentSubmissions.get
abrufen.
Verwenden Sie die Methode courses.courseWork.studentSubmissions.list
, um StudentSubmission
-Ressourcen abzurufen, die einigen Kriterien entsprechen, wie im folgenden Beispiel gezeigt:
Java
Python
Rufen Sie StudentSubmission
-Ressourcen ab, die zu einem bestimmten Studenten gehören. Dazu geben Sie den Parameter userId
an, wie im folgenden Beispiel gezeigt:
Java
Python
Schüler/Studenten werden durch die eindeutige ID oder E-Mail-Adresse des Nutzers identifiziert, die vom Google Admin SDK zurückgegeben wird. Der aktuelle Nutzer kann sich mit der Kurzschreibweise "me"
auch auf seine eigene ID beziehen.
Es ist auch möglich, die abgegebenen Aufgaben aller Aufgaben in einem Kurs abzurufen. Verwenden Sie dazu das Literal "-"
als courseWorkId
, wie im folgenden Beispiel gezeigt:
Java
service.courses().courseWork().studentSubmissions()
.list(courseId, "-")
.set("userId", userId)
.execute();
Python
service.courses().courseWork().studentSubmissions().list(
courseId=<course ID or alias>,
courseWorkId='-',
userId=<user ID>).execute()
Der erforderliche Bereich hängt von der Rolle ab, die der anfragende Nutzer im Kurs hat. Verwenden Sie den folgenden Bereich, wenn der Nutzer eine Lehrkraft oder ein Domainadministrator ist:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Verwenden Sie den folgenden Bereich, wenn der Nutzer ein Student ist:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Die Berechtigung zum Abrufen einer abgegebenen Aufgabe eines Schülers bedeutet nicht, dass er Zugriff auf Anhänge oder Metadaten von Anhängen hat. In der Praxis bedeutet das, dass ein Administrator den Titel einer angehängten Drive-Datei möglicherweise nicht sieht, wenn er kein Teilnehmer des Kurses ist. Informationen dazu, wie Sie Administratoren Zugriff auf Nutzerdateien gewähren, finden Sie im Leitfaden Domainweite Delegierung.
Hinzufügen von Anhängen zu Antworten von Schülern/Studenten
Sie können Links an abgegebene Aufgaben von Schülern/Studenten anhängen, indem Sie eine Ressource vom Typ Link
, DriveFile
oder YouTubeVideo
anhängen. Dazu wird courses.courseWork.studentSubmissions.modifyAttachments
verwendet, wie im folgenden Beispiel gezeigt:
Java
Python
Ein Linkanhang wird durch die Ziel-URL definiert. Classroom ruft automatisch den Titel und das Thumbnail ab. Weitere Informationen zu den anderen Materialien finden Sie auf den entsprechenden Referenzseiten.
Die StudentSubmission
kann nur von einer Lehrkraft oder vom Eigentümer des Kurses geändert werden. Sie können nur Materials
anhängen, wenn der CourseWorkType
der abgegebenen Aufgabe ASSIGNMENT
ist.
Der erforderliche Bereich hängt von der Rolle ab, die der anfragende Nutzer im Kurs hat. Verwenden Sie den folgenden Bereich, wenn der Nutzer Lehrkraft ist:
https://www.googleapis.com/auth/classroom.coursework.students
Verwenden Sie den folgenden Bereich, wenn der Nutzer ein Student ist:
https://www.googleapis.com/auth/classroom.coursework.me
Antwortstatus der Lernenden verwalten
Die Antwort eines Schülers/Studenten kann zurückgezogen, abgegeben oder zurückgegeben werden. Das Statusfeld in StudentSubmission
gibt den aktuellen Status an. Rufen Sie eine der folgenden Methoden auf, um den Status zu ändern:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Alle diese Methoden haben einen leeren Textkörper. Beispiel:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Nur der Eigentümer des StudentSubmission
kann die Aufgabe abgeben oder reaktivieren.
Nur eine abgegebene Aufgabe kann zurückgefordert werden. Lehrkräfte können nur StudentSubmission
zurückgeben, die abgegeben wurden.
Schüler/Studenten benoten
Die Ressource StudentSubmission
enthält zwei Felder zum Speichern von Noten: assignedGrade
(Note, die den Schülern/Studenten angezeigt wird) und draftGrade
(vorläufige Note, die nur für Lehrkräfte sichtbar ist). Diese Felder werden mit courses.courseWork.studentSubmissions.patch
mit einer Feldmaske aktualisiert, die die entsprechenden Felder enthält, wie im folgenden Beispiel gezeigt.
Java
Python
studentSubmission = {
'assignedGrade': 99,
'draftGrade': 80
}
service.courses().courseWork().studentSubmissions().patch(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
updateMask='assignedGrade,draftGrade',
body=studentSubmission).execute()
Bei der Arbeit mit der Classroom-UI können Lehrkräfte erst Noten vergeben, wenn sie zuvor einen Notenentwurf gespeichert haben. Die zugewiesene Note kann dann an einen Schüler/Studenten zurückgegeben werden. Anwendungen müssen dieses Verhalten emulieren. Die Anwendung kann die Aufgabe eines Schülers auf zwei Arten benoten:
Weisen Sie nur
draftGrade
zu. Dies ist z. B. hilfreich, wenn die Lehrkraft Noten vor dem Abschluss manuell prüfen soll. Schüler/Studenten können Notenentwürfe nicht sehen.Weisen Sie sowohl
draftGrade
als auchassignedGrade
zu, um eine Aufgabe vollständig zu benoten.
Zugewiesene Noten auflisten
Sie können alle Noten für ein bestimmtes Kursaufgabenelement auflisten, indem Sie das Antwortobjekt der Methode courses.courseWork.studentSubmissions.list
untersuchen:
Java
ListStudentSubmissionsResponse response = service.courses().courseWork().studentSubmissions()
.list(courseId, courseWorkId)
.execute();
if (response.getStudentSubmissions() != null) {
List<StudentSubmission> submissionList = response.getStudentSubmissions();
for (StudentSubmission submission : submissionList) {
System.out.printf("User ID %s, Assigned grade: %s", submission.getUserId(),
submission.getAssignedGrade());
}
} else {
System.out.println("No submissions found.");
}
Python
response = coursework.studentSubmissions().list(
courseId=course_id,
courseWorkId=coursework_id,
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'))}")