Dies ist die sechste Anleitung in der Reihe zu Classroom-Add-ons.
In dieser Anleitung ändern Sie das Beispiel aus dem vorherigen Anleitungsschritt, um einen Anhang vom Typ „Aktivität“ mit Bewertung zu erstellen. Sie können auch Noten programmatisch an Google Classroom zurückgeben. Diese werden im Notenbuch des Lehrers als Entwurfsnote angezeigt.
Diese Anleitung unterscheidet sich leicht von anderen in der Reihe, da es zwei mögliche Ansätze gibt, um Noten an Classroom zurückzugeben. Beide haben unterschiedliche Auswirkungen auf die Entwickler- und Nutzererfahrung. Berücksichtigen Sie beide beim Entwerfen Ihres Classroom-Add-ons. Weitere Informationen zu den Implementierungsoptionen finden Sie auf der Seite Mit Anhängen interagieren.
Die Funktionen zur Bewertung in der API sind optional. Sie können mit allen Anhängen vom Typ „Aktivität“ verwendet werden.
In dieser Anleitung führen Sie die folgenden Schritte aus:
- Ändern Sie die vorherigen Anfragen zum Erstellen von Anhängen an die Classroom API, um auch den Nenner der Note des Anhangs festzulegen.
- Die Aufgabe des Schülers/Studenten programmatisch benoten und den Zähler der Note für den Anhang festlegen.
- Implementieren Sie zwei Ansätze, um die Note der Aufgabe mithilfe von angemeldeten oder Offline-Anmeldedaten der Lehrkraft an Classroom zu übergeben.
Nach Abschluss der Aufgabe werden die Noten im Classroom-Notenbuch angezeigt, nachdem das Passback-Verhalten ausgelöst wurde. Der genaue Zeitpunkt hängt vom Implementierungsansatz ab.
Für dieses Beispiel wird die Aktivität aus dem vorherigen Walkthrough wiederverwendet, in der einem Schüler ein Bild eines berühmten Wahrzeichens gezeigt wird und er aufgefordert wird, den Namen einzugeben. Weisen Sie die volle Punktzahl für die Anlage zu, wenn der Schüler den richtigen Namen eingibt, andernfalls null.
Benotungsfunktion der Classroom-Add-ons API
Ihr Add-on kann sowohl den Zähler als auch den Nenner der Note für eine Anlage festlegen. Diese werden jeweils mit den Werten pointsEarned
und maxPoints
in der API festgelegt. Auf einer Anlagekarte in der Classroom-Benutzeroberfläche wird der Wert maxPoints
angezeigt, wenn er festgelegt wurde.
Abbildung 1. Die Benutzeroberfläche zum Erstellen von Aufgaben mit drei Add-on-Anhangkarten, für die maxPoints
festgelegt ist.
Mit der Classroom-Add‑ons API können Sie die Einstellungen für Anhang-Noten konfigurieren und die erzielte Punktzahl festlegen. Sie sind nicht mit den Noten für Aufgaben identisch. Die Einstellungen für die Noten der Aufgabe entsprechen jedoch den Einstellungen für die Noten der Anlage, die auf der Anlagekarte das Label Notensynchronisierung hat. Wenn mit dem Anhang „Notensynchronisierung“ pointsEarned
für eine Aufgabe eines Schülers/Studenten festgelegt wird, wird auch die Note des Schülers/Studenten für die Aufgabe als Entwurf festgelegt.
Normalerweise erhält der erste Anhang, der der Aufgabe mit der Einstellung maxPoints
hinzugefügt wurde, das Label „Notensynchronisierung“. Ein Beispiel für das Label „Notensynchronisierung“ finden Sie in Abbildung 1. Beachten Sie, dass die Karte „Anhang 1“ das Label „Notensynchronisierung“ hat und die Note für die Aufgabe im roten Feld auf 50 Punkte aktualisiert wurde. Beachten Sie auch, dass in Abbildung 1 zwar drei Karten mit Anhängen zu sehen sind, aber nur eine Karte das Label „Notensynchronisierung“ hat. Dies ist eine wichtige Einschränkung der aktuellen Implementierung: Nur ein Anhang kann das Label „Notensynchronisierung“ haben.
Wenn mehrere Anhänge mit maxPoints
festgelegt sind, wird durch das Entfernen des Anhangs mit „Notensynchronisierung“ nicht die Notensynchronisierung für die verbleibenden Anhänge aktiviert. Wenn Sie einen weiteren Anhang hinzufügen, für den maxPoints
festgelegt ist, wird die Notensynchronisierung für den neuen Anhang aktiviert und die maximale Note für die Aufgabe wird entsprechend angepasst. Es gibt keinen Mechanismus, um programmatisch zu sehen, welche Anlage das Label „Notensynchronisierung“ hat, oder wie viele Anlagen eine bestimmte Aufgabe hat.
Maximale Note für einen Anhang festlegen
In diesem Abschnitt wird beschrieben, wie Sie den Nenner für eine Anhangsnote festlegen, d. h. die maximal mögliche Punktzahl, die alle Schüler/Studenten für ihre Aufgaben erreichen können. Legen Sie dazu den Wert maxPoints
der Anlage fest.
Es ist nur eine geringfügige Änderung an unserer bestehenden Implementierung erforderlich, um die Funktionen für die Notenvergabe zu aktivieren. Fügen Sie beim Erstellen einer Anlage den Wert maxPoints
in dasselbe AddOnAttachment
-Objekt ein, das die Felder studentWorkReviewUri
, teacherViewUri
und andere Anlagenfelder enthält.
Die Standardpunktzahl für eine neue Aufgabe ist 100. Wir empfehlen, maxPoints
auf einen anderen Wert als 100 zu setzen, damit Sie überprüfen können, ob die Noten richtig festgelegt werden. Legen Sie maxPoints
als Beispiel auf 50 fest:
Python
Fügen Sie das Feld maxPoints
beim Erstellen des attachment
-Objekts hinzu, kurz bevor Sie eine CREATE
-Anfrage an den courses.courseWork.addOnAttachments
-Endpunkt senden. Wenn Sie unserem Beispiel folgen, finden Sie diese Datei unter webapp/attachment_routes.py
.
attachment = {
# Specifies the route for a teacher user.
"teacherViewUri": {
"uri":
flask.url_for(
"load_activity_attachment",
_scheme='https',
_external=True),
},
# Specifies the route for a student user.
"studentViewUri": {
"uri":
flask.url_for(
"load_activity_attachment",
_scheme='https',
_external=True)
},
# Specifies the route for a teacher user when the attachment is
# loaded in the Classroom grading view.
"studentWorkReviewUri": {
"uri":
flask.url_for(
"view_submission", _scheme='https', _external=True)
},
# Sets the maximum points that a student can earn for this activity.
# This is the denominator in a fractional representation of a grade.
"maxPoints": 50,
# The title of the attachment.
"title": f"Attachment {attachment_count}",
}
Für diese Demonstration speichern Sie den maxPoints
-Wert auch in Ihrer lokalen Attachment-Datenbank. So müssen Sie später beim Bewerten von Schülerarbeiten keinen zusätzlichen API-Aufruf ausführen. Beachten Sie jedoch, dass Lehrkräfte die Einstellungen für die Noten von Aufgaben unabhängig von Ihrem Add-on ändern können. Senden Sie eine GET
-Anfrage an den courses.courseWork
-Endpunkt, um den maxPoints
-Wert auf Zuweisungsebene zu sehen. Übergeben Sie dabei die itemId
im Feld CourseWork.id
.
Aktualisieren Sie nun Ihr Datenbankmodell, damit auch der maxPoints
-Wert des Anhangs gespeichert wird.
Wir empfehlen, den Wert maxPoints
aus der Antwort CREATE
zu verwenden:
Python
Fügen Sie zuerst der Tabelle Attachment
das Feld max_points
hinzu. Sie finden sie in der Datei webapp/models.py
, wenn Sie unserem Beispiel folgen.
# Database model to represent an attachment.
class Attachment(db.Model):
# The attachmentId is the unique identifier for the attachment.
attachment_id = db.Column(db.String(120), primary_key=True)
# The image filename to store.
image_filename = db.Column(db.String(120))
# The image caption to store.
image_caption = db.Column(db.String(120))
# The maximum number of points for this activity.
max_points = db.Column(db.Integer)
Kehren Sie zur Anfrage courses.courseWork.addOnAttachments
CREATE
zurück. Speichern Sie den in der Antwort zurückgegebenen maxPoints
-Wert.
new_attachment = Attachment(
# The new attachment's unique ID, returned in the CREATE response.
attachment_id=resp.get("id"),
image_filename=key,
image_caption=value,
# Store the maxPoints value returned in the response.
max_points=int(resp.get("maxPoints")))
db.session.add(new_attachment)
db.session.commit()
Für den Anhang gibt es jetzt eine maximale Note. Sie sollten dieses Verhalten jetzt testen können. Fügen Sie einer neuen Aufgabe eine Anlage hinzu und beobachten Sie, dass auf der Anlagekarte das Label „Notensynchronisierung“ angezeigt wird und sich der Wert „Punkte“ der Aufgabe ändert.
Note für eine Aufgabe eines Schülers oder Studenten in Classroom festlegen
In diesem Abschnitt wird beschrieben, wie Sie den Zähler für eine Note für einen Anhang festlegen, d. h. die Punktzahl eines einzelnen Schülers oder Studenten für den Anhang. Legen Sie dazu den Wert pointsEarned
für die Einreichung einer Anlage durch einen Schüler oder Studenten fest.
Sie müssen nun eine wichtige Entscheidung treffen: Wie soll Ihr Add-on eine Anfrage zum Festlegen von pointsEarned
senden?
Das Problem besteht darin, dass für die Einstellung pointsEarned
der OAuth-Bereich teacher
erforderlich ist.
Schülernutzer sollten nicht den Bereich teacher
erhalten, da dies zu unerwartetem Verhalten führen kann, wenn Schüler mit Ihrem Add-on interagieren, z. B. wenn das Teacher View-Iframe anstelle des Student View-Iframes geladen wird. Sie haben daher zwei Möglichkeiten, pointsEarned
festzulegen:
- Die Anmeldedaten des angemeldeten Lehrers werden verwendet.
- Gespeicherte (Offline-)Anmeldedaten für Lehrkräfte verwenden.
In den folgenden Abschnitten werden die Vor- und Nachteile der einzelnen Ansätze erläutert, bevor die einzelnen Implementierungen vorgestellt werden. In den von uns bereitgestellten Beispielen werden beide Methoden zum Übergeben einer Note an Classroom demonstriert. In der sprachspezifischen Anleitung unten erfahren Sie, wie Sie eine Methode auswählen, wenn Sie die bereitgestellten Beispiele ausführen:
Python
Suchen Sie oben in der Datei webapp/attachment_routes.py
nach der SET_GRADE_WITH_LOGGED_IN_USER_CREDENTIALS
-Deklaration. Legen Sie diesen Wert auf True
fest, um Noten mit den Anmeldedaten des angemeldeten Lehrers zurückzugeben. Legen Sie diesen Wert auf False
fest, um Noten mithilfe gespeicherter Anmeldedaten zurückzugeben, wenn der Schüler die Aufgabe einreicht.
Noten mit den Anmeldedaten der angemeldeten Lehrkraft festlegen
Verwenden Sie die Anmeldedaten des angemeldeten Nutzers, um die Anfrage zum Festlegen von pointsEarned
zu senden.
Das sollte recht intuitiv sein, da es dem Rest der bisherigen Implementierung entspricht und nur wenig Aufwand erfordert.
Beachten Sie jedoch, dass die Lehrkraft nur im iframe „Student Work Review“ (Aufgabenüberprüfung) mit der Aufgabe des Schülers oder Studenten interagiert. Das hat einige wichtige Auswirkungen:
- In Classroom werden erst dann Noten angezeigt, wenn die Lehrkraft in der Classroom-Benutzeroberfläche entsprechende Aktionen ausführt.
- Lehrkräfte müssen möglicherweise jede Schülerarbeit öffnen, um alle Schülernoten einzugeben.
- Es kann eine kurze Verzögerung geben, bis die Note in der Classroom-Benutzeroberfläche angezeigt wird. Die Verzögerung beträgt in der Regel 5 bis 10 Sekunden, kann aber auch bis zu 30 Sekunden dauern.
Aufgrund dieser Faktoren müssen Lehrkräfte möglicherweise viel Zeit für die manuelle Eingabe der Noten aufwenden.
Um diesen Ansatz zu implementieren, fügen Sie Ihrer bestehenden StudentWorkReview-Route einen zusätzlichen API-Aufruf hinzu.
Nachdem Sie die Datensätze für die Aufgabe und die Anhänge des Schülers abgerufen haben, bewerten Sie die Aufgabe und speichern Sie die resultierende Note. Legen Sie die Note im Feld pointsEarned
eines AddOnAttachmentStudentSubmission
-Objekts fest. Stellen Sie schließlich eine PATCH
-Anfrage an den courses.courseWork.addOnAttachments.studentSubmissions
-Endpunkt mit der AddOnAttachmentStudentSubmission
-Instanz im Anfragetext. Beachten Sie, dass wir auch pointsEarned
im updateMask
in unserer PATCH
-Anfrage angeben müssen:
Python
# Look up the student's submission in our database.
student_submission = Submission.query.get(flask.session["submissionId"])
# Look up the attachment in the database.
attachment = Attachment.query.get(student_submission.attachment_id)
grade = 0
# See if the student response matches the stored name.
if student_submission.student_response.lower(
) == attachment.image_caption.lower():
grade = attachment.max_points
# Create an instance of the Classroom service.
classroom_service = ch._credential_handler.get_classroom_service()
# Build an AddOnAttachmentStudentSubmission instance.
add_on_attachment_student_submission = {
# Specifies the student's score for this attachment.
"pointsEarned": grade,
}
# Issue a PATCH request to set the grade numerator for this attachment.
patch_grade_response = classroom_service.courses().courseWork(
).addOnAttachments().studentSubmissions().patch(
courseId=flask.session["courseId"],
itemId=flask.session["itemId"],
attachmentId=flask.session["attachmentId"],
submissionId=flask.session["submissionId"],
# updateMask is a list of fields being modified.
updateMask="pointsEarned",
body=add_on_attachment_student_submission).execute()
Noten mit Offline-Anmeldedaten für Lehrkräfte festlegen
Für den zweiten Ansatz zum Festlegen von Noten sind gespeicherte Anmeldedaten für die Lehrkraft erforderlich, die die Anlage erstellt hat. Für diese Implementierung müssen Sie Anmeldedaten mit den Aktualisierungs- und Zugriffstokens eines zuvor autorisierten Lehrers erstellen und dann diese Anmeldedaten verwenden, um pointsEarned
festzulegen.
Ein entscheidender Vorteil dieses Ansatzes ist, dass Noten ohne Aktionen von Lehrkräften in der Classroom-Benutzeroberfläche eingetragen werden. So werden die oben genannten Probleme vermieden. Das Ergebnis ist, dass Endnutzer die Benotung als nahtlos und effizient empfinden. Außerdem können Sie mit diesem Ansatz den Zeitpunkt auswählen, zu dem Sie Noten zurückgeben, z. B. wenn die Schüler und Studenten die Aufgabe abgeschlossen haben oder asynchron.
Führen Sie die folgenden Aufgaben aus, um diesen Ansatz zu implementieren:
- Ändern Sie die Nutzerdatenbankeinträge, um ein Zugriffstoken zu speichern.
- Ändern Sie die Datenbankeinträge für Anhänge, um eine Lehrer-ID zu speichern.
- Rufen Sie die Anmeldedaten der Lehrkraft ab und erstellen Sie optional eine neue Classroom-Dienstinstanz.
- Note für eine Aufgabe festlegen
Für diese Demonstration legen Sie die Note fest, wenn der Schüler/Student die Aktivität abschließt, d. h., wenn er das Formular über die Ansicht „Schüler/Student“ einreicht.
Nutzerdatenbankdatensätze ändern, um Zugriffstoken zu speichern
Für API-Aufrufe sind zwei eindeutige Tokens erforderlich: das Aktualisierungstoken und das Zugriffstoken. Wenn Sie die Walkthrough-Reihe bisher verfolgt haben, sollte in Ihrem User
-Tabellenschema bereits ein Aktualisierungstoken gespeichert sein. Das Speichern des Aktualisierungstokens ist ausreichend, wenn Sie API-Aufrufe nur mit dem angemeldeten Nutzer vornehmen, da Sie im Rahmen des Authentifizierungsablaufs ein Zugriffstoken erhalten.
Sie müssen die Aufrufe jedoch als eine andere Person als den angemeldeten Nutzer ausführen. Das bedeutet, dass der Authentifizierungsablauf nicht verfügbar ist. Daher müssen Sie das Zugriffstoken zusammen mit dem Aktualisierungstoken speichern. Aktualisieren Sie das User
-Tabellenschema, um ein Zugriffstoken einzuschließen:
Python
In unserem Beispiel befindet sich diese in der Datei webapp/models.py
.
# Database model to represent a user.
class User(db.Model):
# The user's identifying information:
id = db.Column(db.String(120), primary_key=True)
display_name = db.Column(db.String(80))
email = db.Column(db.String(120), unique=True)
portrait_url = db.Column(db.Text())
# The user's refresh token, which will be used to obtain an access token.
# Note that refresh tokens will become invalid if:
# - The refresh token has not been used for six months.
# - The user revokes your app's access permissions.
# - The user changes passwords.
# - The user belongs to a Google Cloud organization
# that has session control policies in effect.
refresh_token = db.Column(db.Text())
# An access token for this user.
access_token = db.Column(db.Text())
Aktualisieren Sie dann den Code, mit dem ein User
-Datensatz erstellt oder aktualisiert wird, um auch das Zugriffstoken zu speichern:
Python
In unserem Beispiel befindet sich diese in der Datei webapp/credential_handler.py
.
def save_credentials_to_storage(self, credentials):
# Issue a request for the user's profile details.
user_info_service = googleapiclient.discovery.build(
serviceName="oauth2", version="v2", credentials=credentials)
user_info = user_info_service.userinfo().get().execute()
flask.session["username"] = user_info.get("name")
flask.session["login_hint"] = user_info.get("id")
# See if we have any stored credentials for this user. If they have used
# the add-on before, we should have received login_hint in the query
# parameters.
existing_user = self.get_credentials_from_storage(user_info.get("id"))
# If we do have stored credentials, update the database.
if existing_user:
if user_info:
existing_user.id = user_info.get("id")
existing_user.display_name = user_info.get("name")
existing_user.email = user_info.get("email")
existing_user.portrait_url = user_info.get("picture")
if credentials and credentials.refresh_token is not None:
existing_user.refresh_token = credentials.refresh_token
# Update the access token.
existing_user.access_token = credentials.token
# If not, this must be a new user, so add a new entry to the database.
else:
new_user = User(
id=user_info.get("id"),
display_name=user_info.get("name"),
email=user_info.get("email"),
portrait_url=user_info.get("picture"),
refresh_token=credentials.refresh_token,
# Store the access token as well.
access_token=credentials.token)
db.session.add(new_user)
db.session.commit()
Anpassen von Datensätzen in der Attachment-Datenbank zum Speichern einer Lehrer-ID
Um eine Note für eine Aktivität festzulegen, müssen Sie pointsEarned
als Lehrkraft im Kurs festlegen. Dafür gibt es mehrere Möglichkeiten:
- Speichern Sie eine lokale Zuordnung von Anmeldedaten von Lehrkräften zu Kurs-IDs. Es ist jedoch möglich, dass dieselbe Lehrkraft nicht immer mit einem bestimmten Kurs verknüpft ist.
- Stellen Sie
GET
-Anfragen an den Classroom API-Endpunktcourses
, um die aktuellen Lehrkräfte abzurufen. Fragen Sie dann lokale Nutzerdatensätze ab, um passende Anmeldedaten für Lehrkräfte zu finden. - Wenn Sie eine Add-on-Anhang erstellen, speichern Sie eine Lehrer-ID in der lokalen Anhänge-Datenbank. Rufen Sie dann die Anmeldedaten der Lehrkraft aus dem
attachmentId
ab, das an den Student View-iFrame übergeben wurde.
In diesem Beispiel wird die letzte Option veranschaulicht, da Sie Noten festlegen, wenn der Schüler eine Aufgabenanlage abschließt.
Fügen Sie der Tabelle Attachment
in der Datenbank ein Feld für die Lehrer-ID hinzu:
Python
In unserem Beispiel befindet sich diese in der Datei webapp/models.py
.
# Database model to represent an attachment.
class Attachment(db.Model):
# The attachmentId is the unique identifier for the attachment.
attachment_id = db.Column(db.String(120), primary_key=True)
# The image filename to store.
image_filename = db.Column(db.String(120))
# The image caption to store.
image_caption = db.Column(db.String(120))
# The maximum number of points for this activity.
max_points = db.Column(db.Integer)
# The ID of the teacher that created the attachment.
teacher_id = db.Column(db.String(120))
Aktualisieren Sie dann jeden Code, der einen Attachment
-Datensatz erstellt oder aktualisiert, so dass auch die ID des Erstellers gespeichert wird:
Python
In unserem Beispiel befindet sich der Code in der Methode create_attachments
in der Datei webapp/attachment_routes.py
.
# Store the attachment by id.
new_attachment = Attachment(
# The new attachment's unique ID, returned in the CREATE response.
attachment_id=resp.get("id"),
image_filename=key,
image_caption=value,
max_points=int(resp.get("maxPoints")),
teacher_id=flask.session["login_hint"])
db.session.add(new_attachment)
db.session.commit()
Anmeldedaten der Lehrkraft abrufen
Suchen Sie die Route, die den iFrame für die Schüleransicht bereitstellt. Rufen Sie unmittelbar nach dem Speichern der Antwort des Schülers in Ihrer lokalen Datenbank die Anmeldedaten des Lehrers aus Ihrem lokalen Speicher ab. Das sollte nach den Vorbereitungen in den beiden vorherigen Schritten ganz einfach sein. Sie können diese auch verwenden, um eine neue Instanz des Classroom-Dienstes für den Lehrkraftnutzer zu erstellen:
Python
In unserem Beispiel befindet sich dieser in der Methode load_activity_attachment
in der Datei webapp/attachment_routes.py
.
# Create an instance of the Classroom service using the tokens for the
# teacher that created the attachment.
# We're assuming that there are already credentials in the session, which
# should be true given that we are adding this within the Student View
# route; we must have had valid credentials for the student to reach this
# point. The student credentials will be valid to construct a Classroom
# service for another user except for the tokens.
if not flask.session.get("credentials"):
raise ValueError(
"No credentials found in session for the requested user.")
# Make a copy of the student credentials so we don't modify the original.
teacher_credentials_dict = deepcopy(flask.session.get("credentials"))
# Retrieve the requested user's stored record.
teacher_record = User.query.get(attachment.teacher_id)
# Apply the user's tokens to the copied credentials.
teacher_credentials_dict["refresh_token"] = teacher_record.refresh_token
teacher_credentials_dict["token"] = teacher_record.access_token
# Construct a temporary credentials object.
teacher_credentials = google.oauth2.credentials.Credentials(
**teacher_credentials_dict)
# Refresh the credentials if necessary; we don't know when this teacher last
# made a call.
if teacher_credentials.expired:
teacher_credentials.refresh(Request())
# Request the Classroom service for the specified user.
teacher_classroom_service = googleapiclient.discovery.build(
serviceName=CLASSROOM_API_SERVICE_NAME,
version=CLASSROOM_API_VERSION,
credentials=teacher_credentials)
Note für eine Aufgabe festlegen
Die weitere Vorgehensweise ist identisch mit der Verwendung der Anmeldedaten des angemeldeten Lehrers. Beachten Sie jedoch, dass Sie den Aufruf mit den Anmeldedaten des Lehrers aus dem vorherigen Schritt ausführen sollten:
Python
# Issue a PATCH request as the teacher to set the grade numerator for this
# attachment.
patch_grade_response = teacher_classroom_service.courses().courseWork(
).addOnAttachments().studentSubmissions().patch(
courseId=flask.session["courseId"],
itemId=flask.session["itemId"],
attachmentId=flask.session["attachmentId"],
submissionId=flask.session["submissionId"],
# updateMask is a list of fields being modified.
updateMask="pointsEarned",
body=add_on_attachment_student_submission).execute()
Add-on testen
Erstellen Sie wie im vorherigen Walkthrough als Lehrkraft eine Aufgabe mit einem Anhang vom Typ „Aktivität“, reichen Sie als Schüler eine Antwort ein und öffnen Sie dann die Einreichung im iframe „Student Work Review“. Je nach Implementierungsansatz sollte die Note zu unterschiedlichen Zeiten angezeigt werden:
- Wenn Sie eine Note zurückgeben möchten, sobald der Schüler oder Student die Aktivität abgeschlossen hat, sollte die Note bereits in der Benutzeroberfläche angezeigt werden, bevor Sie das iFrame „Student Work Review“ öffnen. Sie können sie auch in der Schüler-/Studentenliste sehen, wenn Sie die Aufgabe öffnen, und im Feld „Note“ neben dem iframe „Aufgaben von Schülern/Studenten überprüfen“.
- Wenn Sie eine Note zurückgeben möchten, wenn die Lehrkraft das iframe „Student Work Review“ (Überprüfung der Schülerarbeiten) öffnet, sollte die Note kurz nach dem Laden des iframes im Feld „Note“ angezeigt werden. Wie oben erwähnt, kann das bis zu 30 Sekunden dauern. Danach sollte die Note für den jeweiligen Schüler oder Studenten auch in den anderen Notenbuchansichten von Classroom angezeigt werden.
Prüfen Sie, ob die richtige Punktzahl für den Schüler angezeigt wird.
Glückwunsch! Sie können mit dem nächsten Schritt fortfahren: Anhänge außerhalb von Google Classroom erstellen.