Erziehungsberechtigte erstellen und verwalten

Eine Guardian-Ressource stellt einen Nutzer dar, z. B. einen Elternteil, der Informationen zu den Kursen und Kursarbeiten eines Schülers erhält. Der Erziehungsberechtigte, der in der Regel kein Mitglied der Classroom-Domain des Schülers oder Studenten ist, muss über seine E‑Mail-Adresse eingeladen werden.

Einladungen werden durch die GuardianInvitation-Ressource dargestellt. Der eingeladene Nutzer erhält eine E‑Mail mit der Aufforderung, die Einladung anzunehmen. Wenn die E‑Mail-Adresse nicht mit einem Google-Konto verknüpft ist, wird der Nutzer aufgefordert, ein Konto zu erstellen, bevor er die Einladung annehmen kann.

Wenn der Nutzer eingeladen wird und bevor er die Einladung annimmt, hat die GuardianInvitation den Status PENDING. Sobald der Nutzer die Einladung annimmt, wird GuardianInvitation als COMPLETED gekennzeichnet und eine Guardian-Ressource wird erstellt.

Der Status GuardianInvitation kann auch in COMPLETED geändert werden, wenn er abläuft oder wenn ein autorisierter Nutzer die Einladung storniert (z. B. mit der Methode PatchGuardianInvitation). Die Beziehung zwischen Erziehungsberechtigten und Schülern kann auch von einem Erziehungsberechtigten, einem Classroom-Kursleiter oder einem Administrator über die Classroom-Webanwendung oder die DeleteGuardian-Methode beendet werden.

Wer darf Erziehungsberechtigte verwalten?

In der folgenden Tabelle werden die Aktionen beschrieben, die in Bezug auf Erziehungsberechtigte ausgeführt werden können, je nach Art des authentifizierten Nutzers:

Tabelle der erziehungsberechtigtenbezogenen ACLs nach Nutzertyp

Bereiche

Es gibt drei Bereiche, mit denen Sie Erziehungsberechtigte verwalten können:

  • https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly: Die eigenen Erziehungsberechtigten eines Nutzers ansehen.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly: Erziehungsberechtigte und Einladungen für Erziehungsberechtigte für Schüler und Studenten ansehen, die der Nutzer unterrichtet oder verwaltet.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students: Erziehungsberechtigte und Einladungen für Erziehungsberechtigte für Schüler und Studenten, die der Nutzer unterrichtet oder verwaltet, ansehen und verwalten.

Häufige Aktionen

In diesem Abschnitt werden einige der häufigsten Aktionen beschrieben, die Sie mit der Google Classroom API als Erziehungsberechtigte ausführen können.

Einladung für einen Erziehungsberechtigten erstellen

Das folgende Beispiel zeigt, wie Sie eine Einladung für Erziehungsberechtigte mit der Methode userProfiles.guardianInvitations.create() erstellen können:

Java

classroom/snippets/src/main/java/CreateGuardianInvitation.java
GuardianInvitation guardianInvitation = null;

/* Create a GuardianInvitation object with state set to PENDING. See
https://developers.google.com/classroom/reference/rest/v1/userProfiles.guardianInvitations#guardianinvitationstate
for other possible states of guardian invitations. */
GuardianInvitation content =
    new GuardianInvitation()
        .setStudentId(studentId)
        .setInvitedEmailAddress(guardianEmail)
        .setState("PENDING");
try {
  guardianInvitation =
      service.userProfiles().guardianInvitations().create(studentId, content).execute();

  System.out.printf("Invitation created: %s\n", guardianInvitation.getInvitationId());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of studentId: %s", studentId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardianInvitation;

Python

guardianInvitation = {
  'invitedEmailAddress': 'guardian@gmail.com',
}
guardianInvitation = service.userProfiles().guardianInvitations().create(
                      studentId='student@mydomain.edu',
                          body=guardianInvitation).execute()
print("Invitation created with id: {0}".format(guardianInvitation.get('invitationId')))

Die Antwort enthält eine vom Server zugewiesene Kennung, mit der auf die GuardianInvitation verwiesen werden kann.

Einladung zur Elternaufsicht zurücknehmen

Wenn Sie eine Einladung stornieren möchten, ändern Sie den Status der Einladung von PENDING in COMPLETE, indem Sie die Methode userProfiles.guardianInvitations.patch() aufrufen. Das ist die einzige Möglichkeit, eine Einladung zu entfernen.

Java

classroom/snippets/src/main/java/CancelGuardianInvitation.java
GuardianInvitation guardianInvitation = null;

try {
  /* Change the state of the GuardianInvitation from PENDING to COMPLETE. See
  https://developers.google.com/classroom/reference/rest/v1/userProfiles.guardianInvitations#guardianinvitationstate
  for other possible states of guardian invitations. */
  GuardianInvitation content =
      service.userProfiles().guardianInvitations().get(studentId, invitationId).execute();
  content.setState("COMPLETE");

  guardianInvitation =
      service
          .userProfiles()
          .guardianInvitations()
          .patch(studentId, invitationId, content)
          .set("updateMask", "state")
          .execute();

  System.out.printf(
      "Invitation (%s) state set to %s\n.",
      guardianInvitation.getInvitationId(), guardianInvitation.getState());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "There is no record of studentId (%s) or invitationId (%s).", studentId, invitationId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardianInvitation;

Python

guardian_invite = {
     'state': 'COMPLETE'
}
guardianInvitation = service.userProfiles().guardianInvitations().patch(
  studentId='student@mydomain.edu',
  invitationId=1234, # Replace with the invitation ID of the invitation you want to cancel
  updateMask='state',
  body=guardianInvitation).execute()

Einladungen für einen bestimmten Schüler/Student auflisten

Mit der Methode userProfiles.guardianInvitations.list() können Sie eine Liste aller Einladungen abrufen, die für einen bestimmten Schüler gesendet wurden. Standardmäßig werden nur PENDING-Einladungen zurückgegeben. Ein Domainadministrator kann Einladungen im Status COMPLETED auch abrufen, indem er einen states-Parameter angibt.

Java

classroom/snippets/src/main/java/ListGuardianInvitationsByStudent.java
List<GuardianInvitation> guardianInvitations = new ArrayList<>();
String pageToken = null;

try {
  do {
    ListGuardianInvitationsResponse response =
        service
            .userProfiles()
            .guardianInvitations()
            .list(studentId)
            .setPageToken(pageToken)
            .execute();

    /* Ensure that the response is not null before retrieving data from it to avoid errors. */
    if (response.getGuardianInvitations() != null) {
      guardianInvitations.addAll(response.getGuardianInvitations());
      pageToken = response.getNextPageToken();
    }
  } while (pageToken != null);

  if (guardianInvitations.isEmpty()) {
    System.out.println("No guardian invitations found.");
  } else {
    for (GuardianInvitation invitation : guardianInvitations) {
      System.out.printf("Guardian invitation id: %s\n", invitation.getInvitationId());
    }
  }
} catch (GoogleJsonResponseException e) {
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of studentId (%s).", studentId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardianInvitations;

Python

guardian_invites = []
page_token = None

while True:
    response = service.userProfiles().guardianInvitations().list(
                                      studentId='student@mydomain.edu').execute()
    guardian_invites.extend(response.get('guardian_invites', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break

if not courses:
    print('No guardians invited for this {0}.'.format(response.get('studentId')))
else:
    print('Guardian Invite:')
    for guardian in guardian_invites:
        print('An invite was sent to '.format(guardian.get('id'),
                                              guardian.get('guardianId')))

Aktive Erziehungsberechtigte auflisten

Mit der Methode userProfiles.guardians.list() können Sie ermitteln, welche Nutzer aktive Erziehungsberechtigte für einen bestimmten Schüler sind. Aktive Erziehungsberechtigte sind Erziehungsberechtigte, die die Einladung angenommen haben.

Java

classroom/snippets/src/main/java/ListGuardians.java
List<Guardian> guardians = new ArrayList<>();
String pageToken = null;

try {
  do {
    ListGuardiansResponse response =
        service.userProfiles().guardians().list(studentId).setPageToken(pageToken).execute();

    /* Ensure that the response is not null before retrieving data from it to avoid errors. */
    if (response.getGuardians() != null) {
      guardians.addAll(response.getGuardians());
      pageToken = response.getNextPageToken();
    }
  } while (pageToken != null);

  if (guardians.isEmpty()) {
    System.out.println("No guardians found.");
  } else {
    for (Guardian guardian : guardians) {
      System.out.printf(
          "Guardian name: %s, guardian id: %s, guardian email: %s\n",
          guardian.getGuardianProfile().getName().getFullName(),
          guardian.getGuardianId(),
          guardian.getInvitedEmailAddress());
    }
  }

} catch (GoogleJsonResponseException e) {
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of studentId (%s).", studentId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardians;

Python

guardian_invites = []
page_token = None

while True:
    response = service.userProfiles().guardians().list(studentId='student@mydomain.edu').execute()
    guardian_invites.extend(response.get('guardian_invites', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break

if not courses:
    print('No guardians invited for this {0}.'.format(response.get('studentId')))
else:
    print('Guardian Invite:')
    for guardian in guardian_invites:
        print('An invite was sent to '.format(guardian.get('id'),
                                              guardian.get('guardianId')))

Erziehungsberechtigte entfernen

Sie können einen Erziehungsberechtigten auch mit der Methode userProfiles.guardians.delete() aus einem Schüler oder Studenten entfernen:

Java

classroom/snippets/src/main/java/DeleteGuardian.java
try {
  service.userProfiles().guardians().delete(studentId, guardianId).execute();
  System.out.printf("The guardian with id %s was deleted.\n", guardianId);
} catch (GoogleJsonResponseException e) {
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of guardianId (%s).", guardianId);
  }
}

Python

service.userProfiles().guardians().delete(studentId='student@mydomain.edu',
                                        guardianId='guardian@gmail.com').execute()