Tworzenie grup uczniów i zarządzanie nimi

Grupy uczniów możesz tworzyć w różnych celach, np. związanych z przypisywaniem ukierunkowanych projektów czy współpracą. Używaj interfejsu Classroom API do tworzenia, modyfikowania i odczytywania grup uczniów w ramach kursu w imieniu administratorów i nauczycieli.

Grupy uczniów możesz tworzyć, aktualizować, usuwać i odczytywać za pomocą tych metod:

Możesz też dodawać i usuwać członków grupy uczniów oraz odczytywać ich dane za pomocą tych metod:

Wymagania dotyczące licencji i kryteria kwalifikacji

Aby utworzyć, zmodyfikować lub usunąć grupy uczniów na kursie oraz dodać lub usunąć członków z grup uczniów, musisz spełnić te warunki:

Odczytywanie grup uczniów i ich członków

Administratorzy i nauczyciele zajęć mogą odczytywać dane grup uczniów niezależnie od przypisanej licencji. Oznacza to, że żądania wysyłane do punktów końcowych ListStudentGroups i ListStudentGroupMembers są dozwolone w imieniu dowolnego administratora lub nauczyciela na kursie.

Wymagania wstępne dotyczące przykładowego kodu

W tym przewodniku znajdziesz przykłady kodu w Pythonie. Zakładamy, że masz:

  • Projekt Google Cloud. Możesz go skonfigurować, postępując zgodnie z instrukcjami w tym przewodniku.
  • Dodano te zakresy do ekranu zgody OAuth w projekcie:
    • https://www.googleapis.com/auth/classroom.rosters
    • https://www.googleapis.com/auth/classroom.rosters.readonly w przypadku punktów końcowych tylko do odczytu.
  • Identyfikator kursu, w którym należy zarządzać grupami uczniów. Właściciel kursu musi mieć licencję Google Workspace for Education Plus.
  • Dostęp do danych logowania nauczyciela lub administratora z licencją Google Workspace for Education Plus.

Sprawdzanie, czy użytkownik spełnia wymagania

Interfejs Classroom API udostępnia punkt końcowy userProfiles.checkUserCapability, który pomaga proaktywnie określać, czy użytkownik może tworzyć i modyfikować grupy uczniów oraz ich członków. Metoda jest dostępna w ramach Programu wersji przedpremierowej dla deweloperów. Jeśli jako punkt wyjścia posłużył Ci szybki przewodnik po Pythonie, skonfiguruj nową usługę Classroom, która ma dostęp do metod w wersji przedpremierowej:

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

Punkt końcowy userProfiles.checkUserCapability sprawdza tylko, czy użytkownik może korzystać z określonej funkcji, np. modyfikować grupy uczniów. Nie zawiera informacji o roli w kursie. Na przykład nawet jeśli użytkownik ma uprawnienie CREATE_STUDENT_GROUP, ale jest uczniem na zajęciach, żądanie wysłane do punktu końcowego CreateStudentGroup nie zostanie zrealizowane.

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

Zarządzanie grupami uczniów

Grupy uczniów można tworzyć za pomocą punktu końcowego 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)

Odpowiedź zawiera id nowo utworzonej grupy uczniów, courseId i title grupy uczniów.

Grupa uczniów id może służyć do aktualizowania lub usuwania grupy poszczególnych uczniów.

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)

Możesz pobrać grupy uczniów w ramach kursu za pomocą punktu końcowego ListStudentGroups:

Python

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

    studentGroups = results.get("studentGroups")

Zarządzanie członkami grupy uczniów

Po utworzeniu grupy uczniów możesz dodać do niej członków.

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)

Jeśli chcesz usunąć członka z grupy uczniów, wyślij prośbę podobną do tej:

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)

Aby odczytać członków grupy, wyślij to żądanie:

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

Każdy zasób StudentGroupMember zawiera courseId, studentGroupId i userId członka grupy.