Creare e gestire gruppi di studenti

Puoi utilizzare i gruppi di studenti per organizzare gli studenti in gruppi specifici per migliorare le esperienze di insegnamento, ad esempio compiti mirati e attività collaborative. Utilizza l'API Classroom per creare, modificare e leggere i gruppi di studenti all'interno di un corso per conto di amministratori e insegnanti.

Puoi creare, aggiornare, eliminare e leggere i gruppi di studenti utilizzando i seguenti metodi:

Puoi anche aggiungere, rimuovere e leggere i membri all'interno di un gruppo di studenti utilizzando i seguenti metodi:

Requisiti di licenza e idoneità

Per creare, modificare o eliminare gruppi di studenti in un corso e aggiungere o rimuovere membri dai gruppi di studenti, devono essere soddisfatte le seguenti condizioni:

Lettura dei gruppi di studenti e dei relativi membri

Gli amministratori e gli insegnanti di un corso possono leggere i dati dei gruppi di studenti indipendentemente dalla licenza assegnata. Ciò significa che le richieste agli endpoint ListStudentGroups e ListStudentGroupMembers sono consentite per conto di qualsiasi amministratore o insegnante di un corso.

Prerequisiti per l'esempio di codice

Questa guida fornisce esempi di codice in Python e presuppone che tu disponga di quanto segue:

  • Un progetto Google Cloud. Puoi configurarne uno seguendo le istruzioni riportate nella guida rapida di Python.
  • Sono stati aggiunti i seguenti ambiti alla schermata per il consenso OAuth del progetto:
    • https://www.googleapis.com/auth/classroom.rosters
    • https://www.googleapis.com/auth/classroom.rosters.readonly per gli endpoint di sola lettura.
  • Un ID di un corso in cui devono essere gestiti i gruppi di studenti. Il proprietario del corso deve disporre di una licenza Google Workspace for Education Plus.
  • Accesso alle credenziali di un insegnante o di un amministratore con una licenza Google Workspace for Education Plus.

Verificare l'idoneità dell'utente

L'API Classroom fornisce l'endpoint userProfiles.checkUserCapability per aiutarti a determinare in modo proattivo se un utente è in grado di creare e modificare i gruppi di studenti e i relativi membri. Il metodo è disponibile tramite il programma di anteprima per gli sviluppatori. Se hai seguito la guida rapida di Python come punto di partenza, configura un nuovo servizio Classroom in grado di accedere ai metodi di anteprima:

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

L'endpoint userProfiles.checkUserCapability valuta solo se un utente è idoneo a utilizzare una determinata funzionalità, ad esempio la modifica dei gruppi di studenti. Non offre informazioni sul ruolo del corso. Ad esempio, anche se un utente dispone della funzionalità CREATE_STUDENT_GROUP, se è uno studente del corso, una richiesta all'endpoint CreateStudentGroup non andrà a buon fine.

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.")

Gestire i gruppi di studenti

I gruppi di studenti possono essere creati utilizzando l'endpoint 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 risposta contiene l'id del gruppo di studenti appena creato, l'courseId e l'title del gruppo di studenti.

Il gruppo di studenti id può essere utilizzato per aggiornare o eliminare il gruppo di singoli studenti.

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)

Puoi recuperare i gruppi di studenti all'interno di un corso utilizzando l'endpoint ListStudentGroups:

Python

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

    studentGroups = results.get("studentGroups")

Gestire i membri dei gruppi di studenti

Una volta creato il gruppo di studenti, puoi aggiungervi membri.

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)

Se vuoi rimuovere un membro da un gruppo di studenti, invia una richiesta come la seguente:

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)

Puoi leggere i membri di un gruppo effettuando la seguente richiesta:

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

Ogni risorsa StudentGroupMember include courseId, studentGroupId e userId del membro del gruppo.