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. Sie werden für die API als CourseWorkType
bezeichnet: Aufgaben, Kurzfragen und Multiple-Choice-Fragen.
Für diese Funktion können Sie die CourseWork-Ressource verwenden. Dabei handelt es sich um eine Aufgabe oder Frage, die Schülern in einem bestimmten Kurs zugewiesen wurde, einschließlich zusätzlicher Materialien und Details wie Abgabetermin oder maximale Punktzahl.
Zusätzlich zur Ressource „Kurswork“ können Sie abgeschlossene Aufgaben mit der Ressource StudentSubmission
verwalten. In den folgenden Abschnitten wird dies ausführlicher beschrieben.
Aufgaben erstellen
Aufgaben können nur im Namen der Lehrkraft erstellt werden. Wenn Sie versuchen, im Namen eines Schülers/Studenten eine Aufgabe in einem Kurs zu erstellen, wird der Fehler 403 PERMISSION_DENIED
angezeigt. Ebenso können Domain-Administratoren keine Zuweisungen für Kurse erstellen, in denen sie nicht unterrichtet werden. Wird dies über die API versucht, führt dies ebenfalls zum Fehler 403 PERMISSION_DENIED
.
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 auf die Zuweisung in anderen API-Anfragen verwiesen werden kann.
Wenn Sie verknüpfte Materialien 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 automatisch den Titel und das Thumbnail ab. Die Classroom API unterstützt außerdem Google Drive- und YouTube-Material, das auf ähnliche Weise in einer DriveFile-Ressource oder einer YouTubeVideo-Ressource enthalten sein kann.
Wenn Sie ein Fälligkeitsdatum festlegen möchten, legen Sie die Felder dueDate
und dueTime
auf die entsprechende UTC-Zeit fest. Der Abgabetermin 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. Wenn Sie eine bestimmte Aufgabe oder Frage abrufen möchten, verwenden Sie die Klasse „course.courseWork.get“. Mit {0}courses.courseWork.list{/1} können Sie alle Zuweisungen oder Fragen abrufen (optional, die bestimmten Kriterien entsprechen).
Der erforderliche Bereich hängt von der Rolle ab, die der anfragende Nutzer im Kurs hat. Wenn der Nutzer ein Schüler oder 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
Das Gewähren der Berechtigung zum Abrufen einer Aufgabe oder Frage impliziert keine Berechtigungen 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 Mitglied des Kurses ist. Informationen dazu, wie Sie Administratoren Zugriff auf Nutzerdateien gewähren, finden Sie im Leitfaden zur domainweiten Delegierung.
Antworten der Schüler oder Studenten verwalten
Eine StudentSubmission
-Ressource stellt die erledigte und benotete Aufgabe eines Schülers/Studenten für eine Aufgabe oder Frage dar. Für jeden Schüler/Studenten wird implizit eine StudentSubmission
-Ressource erstellt, wenn eine neue Frage oder Aufgabe erstellt wird.
In den folgenden Abschnitten werden häufige Aktionen erläutert, mit denen die Antworten der Schüler oder Studenten verwaltet werden.
Schüler-/Studentenantworten abrufen
Lernende können ihre eigenen abgegebenen Aufgaben abrufen, Lehrkräfte können abgegebene Aufgaben für alle Teilnehmer in ihren Kursen abrufen und Domain-Administratoren können alle Einreichungen für alle Teilnehmer in ihrer Domain abrufen. Jedem abgegebenen Schüler wird eine Kennung zugewiesen. Wenn Sie ihn kennen, können Sie ihn 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 Schüler oder Studenten gehören, indem Sie den Parameter userId
angeben, 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 mithilfe des "me"
-Kurzbefehls auch auf seine eigene ID verweisen.
Es ist auch möglich, für alle Aufgaben in einem Kurs eine abgegebene Aufgabe der Lernenden einzureichen. 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 Umfang, wenn der Nutzer ein Schüler oder 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 von Schülern und Studenten beinhaltet keine Berechtigungen für den Zugriff auf Anhänge oder Metadaten von Anhängen. In der Praxis bedeutet das, dass ein Administrator den Titel einer angehängten Drive-Datei möglicherweise nicht sieht, wenn er kein Mitglied des Kurses ist. Informationen, wie Sie Administratoren Zugriff auf Nutzerdateien gewähren, finden Sie im Leitfaden Domainweite Delegierung.
Einer Schüler-Antwort Anhänge hinzufügen
Sie können Links an eine abgegebene Aufgabe anhängen, indem Sie eine Link
-, DriveFile
- oder YouTubeVideo
-Ressource anhängen. Dazu verwenden Sie courses.courseWork.studentSubmissions.modifyAttachments
, 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 findest du auf den entsprechenden Referenzseiten.
Die StudentSubmission
kann nur von einer Lehrkraft oder dem Teilnehmer geändert werden, zu dem sie gehört. Sie können nur dann Materials
anhängen, wenn die 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 Umfang, wenn der Nutzer eine Lehrkraft ist:
https://www.googleapis.com/auth/classroom.coursework.students
Verwenden Sie den folgenden Umfang, wenn der Nutzer ein Schüler oder Student ist:
https://www.googleapis.com/auth/classroom.coursework.me
Antwortstatus von Schülern/Studenten verwalten
Die Antworten der Schüler oder Studenten können zurückgezogen, abgegeben oder zurückgegeben werden. Das Feld „state“ in StudentSubmission
gibt den aktuellen Status an. Rufen Sie zum Ändern des Status eine der folgenden Methoden auf:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Bei allen diesen Methoden ist der Text leer. Beispiel:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Nur der Schüler/Student, der Inhaber einer StudentSubmission
ist, kann die Aufgabe abgeben oder reaktivieren.
Nur eine abgegebene Aufgabe kann zurückgefordert werden. Kurslehrer können nur StudentSubmission
zurückgeben, die sich im Status „Abgegeben“ befinden.
Antworten von Schülern/Studenten benoten
Die Ressource StudentSubmission
hat zwei Felder zum Speichern von Noten: assignedGrade
(die für Schüler/Studenten gemeldete Note) und draftGrade
(eine 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-Benutzeroberfläche können Lehrkräfte erst Noten zuweisen, nachdem sie den Notenentwurf gespeichert haben. Die zugewiesene Note kann dann an einen Schüler/Studenten zurückgegeben werden. Anwendungen müssen dieses Verhalten emulieren. In einer Anwendung gibt es zwei Möglichkeiten, die Aufgabe eines Schülers oder Studenten zu benoten:
Weisen Sie nur die
draftGrade
zu. Das ist z. B. hilfreich, wenn die Lehrkraft die Noten manuell prüfen soll, bevor sie sie fertigstellen. Schüler oder 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
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'))}")