Créer et gérer des groupes d'élèves

Vous pouvez répartir vos élèves dans des groupes spécifiques pour améliorer votre enseignement, par exemple en leur assignant des devoirs ciblés et en organisant des activités collaboratives. Utilisez l'API Classroom pour créer, modifier et lire des groupes d'élèves dans un cours au nom des administrateurs et des enseignants.

Vous pouvez créer, mettre à jour, supprimer et lire des groupes d'élèves à l'aide des méthodes suivantes :

Vous pouvez également ajouter, supprimer et lire des membres dans un groupe d'élèves à l'aide des méthodes suivantes :

Conditions d'éligibilité et de licence

Pour créer, modifier ou supprimer des groupes d'élèves dans un cours, et pour ajouter ou supprimer des membres dans des groupes d'élèves, les conditions suivantes doivent être remplies :

Lire les groupes d'élèves et leurs membres

Les administrateurs et les enseignants d'un cours peuvent lire les données des groupes d'élèves, quelle que soit la licence qui leur est attribuée. Cela signifie que les requêtes envoyées aux points de terminaison ListStudentGroups et ListStudentGroupMembers sont autorisées au nom de n'importe quel administrateur ou enseignant d'un cours.

Conditions préalables pour les exemples de code

Ce guide fournit des exemples de code en Python et suppose que vous disposez des éléments suivants :

  • Un projet Google Cloud. Vous pouvez en configurer un en suivant les instructions du guide de démarrage rapide pour Python.
  • Ajoutez les champs d'application suivants à l'écran d'autorisation OAuth de votre projet :
    • https://www.googleapis.com/auth/classroom.rosters
    • https://www.googleapis.com/auth/classroom.rosters.readonly pour les points de terminaison en lecture seule.
  • ID d'un cours dans lequel les groupes d'élèves doivent être gérés. Le propriétaire du cours doit disposer d'une licence Google Workspace for Education Plus.
  • Accès aux identifiants d'un enseignant ou d'un administrateur disposant d'une licence Google Workspace for Education Plus.

Vérifier l'éligibilité des utilisateurs

L'API Classroom fournit le point de terminaison userProfiles.checkUserCapability pour vous aider à déterminer de manière proactive si un utilisateur peut créer et modifier des groupes d'élèves et leurs membres. Cette méthode est disponible dans le programme Preview développeur. Si vous avez suivi le guide de démarrage rapide Python comme point de départ, configurez un nouveau service Classroom pouvant accéder aux méthodes d'aperçu :

Python

classroom_service_with_capability_endpoint = googleapiclient.discovery.build(
    serviceName='classroom',
    version='v1',
    credentials=creds,
    static_discovery=False,
    discoveryServiceUrl='https://classroom.googleapis.com/$discovery/rest?labels=DEVELOPER_PREVIEW&key=API_KEY')

Le point de terminaison userProfiles.checkUserCapability évalue uniquement si un utilisateur est éligible à l'utilisation d'une certaine fonctionnalité, comme la modification de groupes d'élèves. Il ne fournit aucune information sur le rôle dans le cours. Par exemple, même si un utilisateur dispose de la capacité CREATE_STUDENT_GROUP, une requête au point de terminaison CreateStudentGroup n'aboutira pas s'il est élève du cours.

Python

def check_student_groups_update_capability():
    """Checks whether a user is eligible to create and modify student groups."""
    capability = classroom_service_with_capability_endpoint.userProfiles().checkUserCapability(
        userId="me", # Can also be set to a different user's email address or ID
        capability="CREATE_STUDENT_GROUP",
        previewVersion="V1_20240930_PREVIEW" # Required while the method is in the DPP.
    ).execute()

    if capability.get("allowed"): # Retrieve the `allowed` boolean from the response.
        print("User is eligible to create and modify student groups.")
    else:
        print("User is not eligible to create and modify student groups.")

Gérer les groupes d'élèves

Vous pouvez créer des groupes d'élèves à l'aide du point de terminaison CreateStudentGroup.

Python

def create_student_group(classroom_service, course_id):
    body = {
        "title": "Team Blue"
    }

    response = classroom_service.courses().studentGroups().create(
        courseId=course_id,
        body=body
    ).execute()

    print(response)

La réponse contient le id du groupe d'élèves nouvellement créé, le courseId et le title du groupe d'élèves.

Le groupe d'élèves id peut être utilisé pour modifier ou supprimer le groupe d'élèves individuel.

Python

def update_student_group(classroom_service, course_id, student_group_id):
    body = {
        "title": "Team Green"
    }

    response = classroom_service.courses().studentGroups().patch(
        courseId=course_id,
        id=student_group_id,
        body=body,
        updateMask="title"
    ).execute()

    print(response)
def delete_student_group(classroom_service, course_id, student_group_id):
    response = classroom_service.courses().studentGroups().delete(
        courseId=course_id,
        id=student_group_id
    ).execute()

    print(response)

Vous pouvez récupérer les groupes d'élèves d'un cours à l'aide du point de terminaison ListStudentGroups :

Python

def list_student_groups(classroom_service, course_id):
    results = classroom_service.courses().studentGroups().list(
        courseId=course_id
    ).execute()

    studentGroups = results.get("studentGroups")

Gérer les membres d'un groupe d'élèves

Une fois le groupe d'élèves créé, vous pouvez y ajouter des membres.

Python

def add_student_group_member(classroom_service, course_id, student_group_id):
    body = {
        "userId": "student@schooldomain.com"
    }

    response = classroom_service.courses().studentGroups().studentGroupMembers().create(
        courseId=course_id,
        studentGroupId=student_group_id,
        body=body
    ).execute()

    print(response)

Si vous souhaitez supprimer un membre d'un groupe d'élèves, envoyez une requête semblable à celle-ci :

Python

def delete_student_group_member(classroom_service, course_id, student_group_id):
    response = classroom_service.courses().studentGroups().studentGroupMembers().delete(
        courseId=course_id,
        studentGroupId=student_group_id,
        userId="student@schooldomain.com"
    ).execute()
    print(response)

Vous pouvez lire les membres d'un groupe en envoyant la requête suivante :

Python

def list_student_group_members(classroom_service, course_id, student_group_id):
    results = classroom_service.courses().studentGroups().studentGroupMembers().list(
        courseId=course_id,
        studentGroupId=student_group_id
    ).execute()

    print(results.get("studentGroupMembers"))

Chaque ressource StudentGroupMember inclut les courseId, studentGroupId et userId du membre du groupe.