Die Classroom-Benutzeroberfläche unterstützt fünf Arten von Kursaufgaben: Aufgaben, Quizaufgaben, Fragen mit Kurzantworten, Multiple-Choice-Fragen und Materialien. Die Classroom API unterstützt derzeit drei dieser Typen. Diese werden in der API als CourseWorkType
bezeichnet: Aufgaben, Kurzantwort-Fragen und Multiple-Choice-Fragen.
Materials
an Ressourcen vom Typ CourseWorkType
: Aufgaben, Kurzantwort- und Multiple-Choice-Fragen.
Für den Zugriff auf diese Funktion können Sie die Ressource CourseWork verwenden. Sie steht für eine Aufgabe oder Frage, die den Teilnehmern eines bestimmten Kurses zugewiesen wurde, einschließlich zusätzlicher Materialien und Details wie Abgabetermin oder maximale Punktzahl.
Neben der Ressource „Kurswork“ können Sie abgeschlossene Aufgaben mit der Ressource StudentSubmission
verwalten. In den folgenden Abschnitten werden diese genauer beschrieben.
Aufgaben erstellen
Aufgaben können nur im Namen der Lehrkraft(n) des Kurses erstellt werden. Wenn Sie versuchen, in einem Kurs Aufgaben im Namen eines Schülers oder Studenten zu erstellen, wird der Fehler 403 PERMISSION_DENIED
ausgegeben. Ebenso können Domainadministratoren keine Aufgaben für Kurse erstellen, die sie nicht unterrichten. Ein Versuch, dies über die API zu tun, führt ebenfalls zu einem 403-Fehler PERMISSION_DENIED
.
Wenn Sie Zuweisungen mit der Methode courses.courseWork.create
erstellen, können Sie Links als materials
anhängen, wie im folgenden Beispielcode gezeigt:
Java
Python
Das Ergebnis enthält eine vom Server zugewiesene Kennung, mit der die Zuweisung in anderen API-Anfragen referenziert werden kann.
Wenn Sie verknüpfte Materialien in eine Aufgabe aufnehmen 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 die Miniaturansicht 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 enthalten sind.
Wenn Sie ein Fälligkeitsdatum angeben 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 Teilnehmer und Lehrkräfte des entsprechenden Kurses oder von einem Domainadministrator abrufen. Um eine bestimmte Aufgabe oder Frage abzurufen, verwenden Sie „courses.courseWork.get“. Mit „courses.courseWork.list“ können Sie alle Aufgaben oder Fragen abrufen, die optional mit bestimmten Kriterien übereinstimmen.
Der erforderliche Umfang 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 bedeutet nicht, dass Sie berechtigt sind, auf Materialien oder Materialmetadaten zuzugreifen. In der Praxis bedeutet dies, dass Administratoren den Titel einer angehängten Drive-Datei möglicherweise nicht sehen, wenn sie kein Kursmitglied sind. Informationen dazu, wie Sie Administratoren Zugriff auf Nutzerdateien gewähren, finden Sie im Leitfaden zur domainweiten Delegierung.
Antworten von Schülern/Studenten verwalten
Eine StudentSubmission
-Ressource steht für die geleistete Arbeit und die Note eines Schülers/Studenten bei einer Aufgabe oder Frage. Wenn eine neue Frage oder Aufgabe erstellt wird, wird implizit für jeden Schüler/Studenten eine StudentSubmission
-Ressource erstellt.
In den folgenden Abschnitten werden häufige Aktionen beschrieben, mit denen die Antworten von Schülern oder Studenten verwaltet werden.
Antworten von Schülern/Studenten abrufen
Lernende können ihre eigenen Aufgaben abrufen, Lehrkräfte können Beiträge für alle Teilnehmer in ihren Kursen abrufen und Domainadministratoren können alle Einreichungen für alle Schüler/Studenten in ihrer Domain abrufen. Jeder Einreichung von Schülern/Studenten wird eine ID zugewiesen. Wenn Sie die ID kennen, können Sie sie mit courses.courseWork.studentSubmissions.get
abrufen.
Verwenden Sie die Methode courses.courseWork.studentSubmissions.list
, um StudentSubmission
-Ressourcen abzurufen, die bestimmten Kriterien entsprechen, wie im folgenden Beispiel gezeigt:
Java
Python
Rufen Sie StudentSubmission
-Ressourcen ab, die zu einem bestimmten Studenten gehören. Geben Sie dazu den Parameter userId
an, wie im folgenden Beispiel gezeigt:
Java
Python
Die Lernenden werden durch die eindeutige ID oder E-Mail-Adresse des Nutzers identifiziert, die vom Google Admin SDK zurückgegeben wird. Der aktuelle Nutzer kann auch mit dem Kürzel "me"
auf seine eigene ID verweisen.
Es ist auch möglich, abgegebene Aufgaben für alle Aufgaben eines Kurses 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 Umfang 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 Schüler ist:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Eine Berechtigung zum Abrufen von Aufgaben von Schülern oder Studenten bedeutet nicht automatisch, dass sie auf Anhänge oder Metadaten von Anhängen zugreifen dürfen. In der Praxis bedeutet dies, dass Administratoren, die kein Kursmitglied sind, möglicherweise den Titel einer angehängten Drive-Datei nicht sehen. Informationen dazu, wie Sie Administratoren Zugriff auf Nutzerdateien gewähren, finden Sie in der Anleitung zur domainweiten Delegierung.
Anhänge zu einer Antwort von Schülern/Studenten hinzufügen
Sie können Links an eine von Schülern/Studenten abgegebene Aufgabe anhängen, indem Sie eine Ressource vom Typ Link
, DriveFile
oder YouTubeVideo
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 die Miniaturansicht ab. Informationen zu den anderen Materialien finden Sie auf den entsprechenden Referenzseiten.
Das StudentSubmission
kann nur von einem Kursleiter oder vom Kursteilnehmer geändert werden, dem es gehört. Sie können Materials
nur anhängen, wenn CourseWorkType
der abgegebenen Aufgabe des Schülers/Studenten ASSIGNMENT
ist.
Der erforderliche Umfang hängt von der Rolle ab, die der anfragende Nutzer im Kurs hat. Verwenden Sie den folgenden Bereich, wenn der Nutzer eine Lehrkraft ist:
https://www.googleapis.com/auth/classroom.coursework.students
Verwenden Sie den folgenden Bereich, wenn der Nutzer ein Schüler ist:
https://www.googleapis.com/auth/classroom.coursework.me
Antwortstatus von Schülern/Studenten verwalten
Die Antwort eines Schülers oder 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 verwenden 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 Schüler/Student, dem ein StudentSubmission
gehört, kann es abgeben oder zurückfordern.
Nur abgegebene Aufgaben können zurückgefordert werden. Kurslehrkräfte können nur ein StudentSubmission
zurückgeben, das den Status „Abgegeben“ hat.
Antworten von Schülern/Studenten benoten
Die Ressource StudentSubmission
hat zwei Felder, in denen Noten gespeichert werden: assignedGrade
– die Note, die den Schülern oder Studenten gemeldet wird, und draftGrade
– eine vorläufige Note, die nur für Lehrkräfte sichtbar ist. Diese Felder werden mithilfe von 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()
Wenn Lehrkräfte die Classroom-Benutzeroberfläche verwenden, können Lehrkräfte erst dann eine Note zuweisen, wenn sie zum ersten Mal einen Notenentwurf gespeichert haben. Die Note kann dann an die Lernenden zurückgegeben werden. Anwendungen müssen dieses Verhalten emulieren. Ihre Anwendung kann die Aufgabe eines Schülers/Studenten auf zwei Arten benoten:
Weisen Sie nur
draftGrade
zu. Dies ist beispielsweise nützlich, damit die Lehrkraft Noten vor der Fertigstellung manuell überprüfen kann. Schüler/Studenten können keine Notenentwürfe sehen.Weisen Sie
draftGrade
undassignedGrade
zu, um eine Aufgabe vollständig zu benoten.
Zugewiesene Noten auflisten
Mit dem Antwortobjekt der Methode courses.courseWork.studentSubmissions.list
können Sie alle Noten für ein bestimmtes Kursaufgabenelement auflisten:
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'))}")