Interfejs Classroom obsługuje 5 typów zadań: Projekty, Projekty quizu, Pytania jednokrotnego wyboru, Pytania jednokrotnego wyboru i Materiały. Interfejs Classroom API obsługuje obecnie 3 typy tych typów. Interfejs API znane jest jako CourseWorkType
: Projekty, Pytania z krótką odpowiedzią i Pytania jednokrotnego wyboru.
Aby uzyskać dostęp do tej funkcji, możesz użyć zasobu CourseWork, który reprezentuje projekt lub pytanie przypisane do uczniów w ramach danego kursu, w tym wszelkie dodatkowe materiały i szczegóły, takie jak termin lub maksymalny wynik.
Oprócz zasobu CourseWork możesz zarządzać ukończonymi projektami za pomocą zasobu StudentSubmission
. Poniżej znajdziesz więcej szczegółów na ten temat.
Tworzenie projektów
Projekty można utworzyć tylko w imieniu nauczycieli prowadzących zajęcia. Próba utworzenia projektów na zajęciach w imieniu ucznia spowoduje błąd 403 PERMISSION_DENIED
. Podobnie administratorzy domen nie mogą tworzyć przypisań w przypadku kursów, których nie uczą, i próbujących tego dokonać przy użyciu interfejsu API również zwracają błąd 403 PERMISSION_DENIED
.
Podczas tworzenia przypisań za pomocą metody courses.courseWork.create
możesz dołączać linki jako materials
, jak pokazano w tym przykładowym kodzie:
Java
Python
Wynik zawiera przypisany przez serwer identyfikator, którego można użyć do odwoływania się do przypisania w innych żądaniach interfejsu API.
Aby dołączyć materiały w projekcie utworzonym przy użyciu interfejsu Classroom API, użyj zasobu linku, który określa docelowy adres URL. Classroom automatycznie pobiera tytuł i miniaturę. Interfejs API Classroom natywnie obsługuje też pliki z Dysku Google i YouTube, które w podobny sposób można uwzględnić w zasobie DyskuFile lub zasobie YouTubeVideo.
Aby określić termin, w polach dueDate
i dueTime
ustaw odpowiedni czas UTC. Termin musi przypadać w przyszłości.
Pobieranie projektów i pytań
Możesz pobierać projekty i pytania dla uczniów i nauczycieli odpowiadającego im kursu lub przez administratora domeny. Aby znaleźć konkretny projekt lub pytanie, skorzystaj z kursów.courseWork.get. Aby pobrać wszystkie projekty lub pytania (opcjonalnie spełniające określone kryteria), użyj kursucourses.courseWork.list.
Wymagany zakres zależy od roli, którą użytkownik wysyłający żądanie ma w ramach kursu. Jeśli użytkownik jest uczniem, użyj jednego z tych zakresów:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Jeśli użytkownik jest nauczycielem lub administratorem domeny, użyj jednego z tych zakresów:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Pozwolenie na pobranie projektu lub pytania nie sugeruje uprawnień dostępu do materiałów lub metadanych materiałów. W praktyce oznacza to, że administrator może nie widzieć tytułu załączonego pliku z Dysku, jeśli nie jest uczestnikiem zajęć. Jeśli chcesz zezwolić administratorom na dostęp do plików użytkowników, zapoznaj się z przewodnikiem na temat przekazywania dostępu w całej domenie.
Zarządzanie odpowiedziami uczniów
Zasób StudentSubmission
pokazuje wykonane i ocenione zadania ucznia lub danego pytania. Zasób StudentSubmission
jest domyślnie tworzony dla każdego ucznia po utworzeniu nowego pytania lub projektu.
W poniższych sekcjach opisano typowe działania, które zarządzają odpowiedziami uczniów.
Pobieranie odpowiedzi uczniów
Uczniowie mogą pobierać własne zadania, nauczyciele mogą pobierać zadania wszystkich uczniów biorących udział w kursach, a administratorzy domen mogą pobierać wszystkie zadania dla wszystkich uczniów w domenie. Każdy projekt przesłany przez tę osobę ma przypisany identyfikator. Jeśli go znasz, możesz go pobrać, korzystając ze identyfikatora courses.courseWork.studentSubmissions.get
.
Użyj metody courses.courseWork.studentSubmissions.list
, aby uzyskać zasoby StudentSubmission
, które spełniają określone kryteria, jak pokazano w tym przykładzie:
Java
Python
Aby pobrać zasoby StudentSubmission
należące do określonego ucznia, określ parametr userId
, jak w tym przykładzie:
Java
Python
Uczniowie są identyfikowani na podstawie unikalnego identyfikatora lub adresu e-mail użytkownika zwróconego przez pakiet Google Admin SDK. Bieżący użytkownik może też odwoływać się do własnego identyfikatora za pomocą skrótu "me"
.
Możesz też wyświetlić zadania przesłane przez wszystkich uczniów na zajęciach. Aby to zrobić, użyj literału "-"
jako courseWorkId
, jak w tym przykładzie:
Java
service.courses().courseWork().studentSubmissions()
.list(courseId, "-")
.set("userId", userId)
.execute();
Python
service.courses().courseWork().studentSubmissions().list(
courseId=<course ID or alias>,
courseWorkId='-',
userId=<user ID>).execute()
Wymagany zakres zależy od roli, którą użytkownik wysyłający żądanie ma w ramach kursu. Jeśli użytkownik jest nauczycielem lub administratorem domeny, użyj tego zakresu:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Jeśli użytkownik jest uczniem, użyj tego zakresu:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Zezwolenie na pobranie zadania ucznia nie oznacza, że ma on dostęp do załączników lub metadanych załączników. W praktyce oznacza to, że administrator może nie widzieć tytułu załączonego pliku z Dysku, jeśli nie jest uczestnikiem zajęć. Jeśli chcesz zezwolić administratorom na dostęp do plików użytkowników, przeczytaj przewodnik na temat przekazywania dostępu w całej domenie.
Dodawanie załączników do odpowiedzi ucznia
Do materiałów przesłanych przez ucznia możesz dodawać linki, używając zasobu Link
, DriveFile
lub YouTubeVideo
. Można to zrobić w courses.courseWork.studentSubmissions.modifyAttachments
, jak w tym przykładzie:
Java
Python
Załącznik linku jest definiowany przez docelowy adres URL. Classroom automatycznie pobiera tytuł i miniaturę. Więcej informacji o pozostałych materiałach znajdziesz na odpowiednich stronach.
StudentSubmission
może zostać zmienione tylko przez nauczyciela kursu lub ucznia, który jest jego właścicielem. Możesz dołączyć tylko Materials
tylko wtedy, gdy CourseWorkType
zadania ucznia to ASSIGNMENT
.
Wymagany zakres zależy od roli, którą użytkownik wysyłający żądanie ma w ramach kursu. Jeśli użytkownik jest nauczycielem, użyj tego zakresu:
https://www.googleapis.com/auth/classroom.coursework.students
Jeśli użytkownik jest uczniem, użyj tego zakresu:
https://www.googleapis.com/auth/classroom.coursework.me
Zarządzanie stanem odpowiedzi uczniów
Odpowiedzi uczniów mogą być nieprzesłane, oddane lub zwrócone. Pole stanu w StudentSubmission
wskazuje bieżący stan. Aby zmienić stan, wywołaj jedną z tych metod:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Wszystkie te metody tworzą pustą treść. Przykład:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Tylko uczeń, który ma konto StudentSubmission
, może je oddać lub odebrać.
Można tylko odzyskać oddane zadanie. Nauczyciele biorący udział w zajęciach mogą zwrócić tylko te StudentSubmission
, które zostały oddane.
Ocenianie odpowiedzi uczniów
Zasób StudentSubmission
zawiera 2 pola do przechowywania ocen: assignedGrade
, czyli ocena zgłoszona uczniom, i draftGrade
, czyli wstępna ocena widoczna tylko dla nauczycieli. Te pola są aktualizowane za pomocą courses.courseWork.studentSubmissions.patch
z maską pola zawierającą odpowiednie pola, jak pokazano w poniższym przykładzie.
Java
Python
studentSubmission = {
'assignedGrade': 99,
'draftGrade': 80
}
service.courses().courseWork().studentSubmissions().patch(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
updateMask='assignedGrade,draftGrade',
body=studentSubmission).execute()
Podczas pracy z interfejsem Classroom nauczyciele nie mogą przypisywać ocen, dopóki nie zapiszą najpierw wersji roboczej. Następnie przypisana ocena może zostać zwrócona uczniowi. Aplikacje muszą emulować to działanie. Aplikacja może ocenić projekt ucznia na 2 sposoby:
Przypisz tylko tag
draftGrade
. Jest to przydatne na przykład wtedy, gdy chcesz, aby nauczyciel ręcznie sprawdził oceny przed ich ukończeniem. Uczniowie nie widzą ocen roboczych.Aby w pełni ocenić zadanie, przypisz
draftGrade
iassignedGrade
.
Wyświetl listę przypisanych ocen
Aby wyświetlić listę wszystkich ocen związanych z określonym elementem zadania, przejrzyj obiekt odpowiedzi metody courses.courseWork.studentSubmissions.list
:
Java
Python
response = coursework.studentSubmissions().list(
courseId=course_id,
courseWorkId=coursework_id,
pageSize=10).execute()
submissions.extend(response.get('studentSubmissions', []))
if not submissions:
print('No student submissions found.')
print('Student Submissions:')
for submission in submissions:
print(f"Submitted at:"
f"{(submission.get('userId'), submission.get('assignedGrade'))}")