Vos utilisateurs utilisent-ils Classroom avec Google Meet ? Consultez le guide de démarrage rapide d'Apps Script pour savoir comment vérifier la participation des élèves aux cours Google Meet.

Gérer les représentants légaux

Une ressource Guardian représente un utilisateur, tel qu'un parent, qui reçoit des informations sur les cours et le travail d'un élève. Le représentant légal, qui n'est généralement pas membre du domaine Classroom de l'élève, doit être invité à l'aide de son adresse e-mail pour devenir responsable.

Cette invitation crée une ressource GuardianInvitation avec l'état PENDING. L'utilisateur reçoit ensuite un e-mail lui demandant d'accepter l'invitation. Si l'adresse e-mail n'est pas associée à un compte Google, l'utilisateur est invité à en créer un avant d'accepter l'invitation.

Tant que l'invitation est à l'état PENDING, l'utilisateur peut l'accepter, ce qui crée une ressource Guardian et marque l'état COMPLETED sur GuardianInvitation. Une invitation peut également devenir COMPLETED si elle expire ou si un utilisateur autorisé l'annule (par exemple, à l'aide de la méthode PatchGuardianInvitation). Cette relation peut également être rompue par un responsable, un enseignant ou un administrateur, via l'interface utilisateur Classroom ou la méthode DeleteGuardian.

Qui peut gérer les représentants légaux

Le tableau suivant décrit les actions pouvant être effectuées pour les représentants légaux, en fonction du type d'utilisateur actuellement authentifié:

Tableau des LCA liées aux représentants légaux par type d'utilisateur

Niveaux d'accès

Trois niveaux d'accès vous permettent de gérer les représentants légaux:

Actions courantes

Cette section décrit certaines des actions courantes des représentants légaux que vous pouvez effectuer à l'aide de l'API Google Classroom.

Créer une invitation de responsable

L'exemple suivant montre comment créer une invitation de représentant légal à l'aide de la méthode userProfiles.guardianInvitations.create():

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')))

Le résultat inclut un identifiant attribué par le serveur, qui peut être utilisé pour faire référence à GuardianInvitation.

Annuler l'invitation d'un représentant légal

Pour annuler une invitation, remplacez l'état de l'invitation PENDING par COMPLETE en appelant la méthode userProfiles.guardianInvitations.patch(). Notez qu'il s'agit actuellement du seul moyen de supprimer une invitation.

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()

Répertorier les invitations pour un élève spécifique

Vous pouvez obtenir la liste de toutes les invitations envoyées à un élève spécifique à l'aide de la méthode userProfiles.guardianInvitations.list():

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')))

Par défaut, seules PENDING invitations sont renvoyées. En tant qu'administrateur de domaine, vous pouvez également récupérer les invitations à l'état COMPLETED en fournissant un paramètre d'état.

Répertorier les représentants légaux actifs

Si vous souhaitez identifier les utilisateurs qui sont les représentants légaux actifs d'un élève spécifique, vous pouvez utiliser la méthode userProfiles.guardians.list(). Les gardes actifs sont les représentants légaux qui ont accepté l'invitation par e-mail.

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')))

Supprimer les représentants légaux

Vous pouvez également supprimer un représentant légal d'un élève à l'aide de la méthode userProfiles.guardians.delete():

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()