Interfejs Classroom obsługuje 5 typów zadań: Projekty, Testy, Pytania z krótką odpowiedzią, Pytania jednokrotnego wyboru i Materiały. Interfejs Classroom API obecnie obsługuje 3 typy tych typów – CourseWorkType
w przypadku interfejsu API: Projekty, pytania z krótką odpowiedzią i pytania jednokrotnego wyboru.
Materials
do zasobów: CourseWorkType
,
projekty, pytania z krótką odpowiedzią i pytania jednokrotnego wyboru.
Aby uzyskać dostęp do tej funkcji, możesz skorzystać z zasobu CourseWork, który reprezentuje projekt lub pytanie przypisane uczniom na danym kursie, wraz z wszelkimi dodatkowymi materiałami i informacjami, takimi jak termin oddania czy maksymalna liczba punktów.
Ukończonymi projektami możesz zarządzać nie tylko za pomocą zasobu CourseWork, ale też za pomocą zasobu StudentSubmission
. Poniżej znajdziesz więcej informacji.
Tworzenie projektów
Projekty można tworzyć tylko w imieniu nauczycieli na zajęciach. Próba utworzenia projektów na zajęciach w imieniu ucznia spowoduje wystąpienie błędu 403 PERMISSION_DENIED
. Administratorzy domen również nie mogą tworzyć projektów dla zajęć, których nie uczą, a próba ich utworzenia za pomocą interfejsu API również spowoduje wystąpienie błędu 403 PERMISSION_DENIED
.
Podczas tworzenia projektów za pomocą metody courses.courseWork.create
możesz dołączać linki jako materials
, jak widać w przykładowym kodzie poniżej:
Java
Python
Wynik zawiera identyfikator przypisany przez serwer, który może służyć do odwoływania się do przypisania w innych żądaniach do interfejsu API.
Aby dołączyć połączone materiały w projekcie utworzonym za pomocą interfejsu Classroom API, użyj zasobu linku, podając docelowy adres URL. Classroom automatycznie pobierze tytuł i miniaturę. Interfejs Classroom API natywnie obsługuje też materiały z Dysku Google i YouTube, które w podobny sposób można dodać do zasobów DriveFile lub YouTubeVideo.
Aby określić termin, ustaw w polach dueDate
i dueTime
odpowiedni czas UTC. Termin musi przypadać w przyszłości.
Pobierz projekty i pytania
Możesz pobrać projekty i pytania dla uczniów i nauczycieli odpowiadających im zajęć lub przez administratora domeny. Aby pobrać konkretny projekt lub pytanie, użyj polecenia projects.courseWork.get. Aby pobrać wszystkie projekty lub pytania (opcjonalnie spełniające niektóre kryteria), użyj plikucourses.courseWork.list.
Wymagany zakres zależy od roli, jaką użytkownik wysyłający żądanie pełni na zajęciach. 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, zastosuj jeden z tych zakresów:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Posiadanie uprawnień do pobrania projektu lub pytania nie oznacza uprawnień do korzystania z materiałów lub metadanych materiałów. W praktyce oznacza to, że administrator może nie zobaczyć nazwy 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 po przekazywaniu dostępu w całej domenie.
Zarządzanie odpowiedziami uczniów
Zasób StudentSubmission
reprezentuje pracę i ocenę ucznia związaną z projektem lub pytaniem. Zasób StudentSubmission
jest domyślnie tworzony dla każdego ucznia po utworzeniu nowego pytania lub zadania.
W poniższych sekcjach opisano typowe czynności związane z zarządzaniem odpowiedziami uczniów.
Pobieranie odpowiedzi uczniów
Uczniowie mogą pobierać własne prace, nauczyciele mogą pobierać projekty dotyczące wszystkich uczniów biorących udział w tych zajęciach, a administratorzy domen mogą pobierać wszystkie prace wszystkich uczniów w ich domenie. Do każdego zadania jest przypisywany identyfikator. Jeśli znasz identyfikator, użyj courses.courseWork.studentSubmissions.get
, aby go pobrać.
Użyj metody courses.courseWork.studentSubmissions.list
, aby uzyskać
StudentSubmission
zasoby spełniające określone kryteria, jak 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 zwracanego przez pakiet Google Admin SDK. Bieżący użytkownik może też powołać się na własny identyfikator, korzystając ze skrótu "me"
.
Możesz też pobierać prace przesłane przez uczniów do wszystkich projektów w ramach zajęć. Aby to zrobić, użyj literału "-"
jako właściwości 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, jaką użytkownik wysyłający żądanie pełni na zajęciach. 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
Posiadanie uprawnień do pobierania zadań przesłanych przez ucznia nie oznacza uprawnień do korzystania z załączników lub metadanych załączników. W praktyce oznacza to, że administrator może nie zobaczyć nazwy 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 po przekazywaniu dostępu w całej domenie.
Dodawanie załączników do odpowiedzi uczniów
Do zadań przesłanych przez ucznia możesz dołączyć linki, dołączając zasoby Link
, DriveFile
lub YouTubeVideo
. Należy to zrobić w polu courses.courseWork.studentSubmissions.modifyAttachments
, jak widać w tym przykładzie:
Java
Python
Załącznik z linkiem jest zdefiniowany przez docelowy adres URL. Classroom automatycznie pobierze tytuł i obraz miniatury. Informacje o pozostałych materiałach znajdziesz na odpowiednich stronach referencyjnych.
Element StudentSubmission
może modyfikować tylko nauczyciel zajęć lub uczeń, do którego należy. Możesz załączyć plik Materials
tylko wtedy, gdy wartość
CourseWorkType
zadania przesłanego przez ucznia to ASSIGNMENT
.
Wymagany zakres zależy od roli, jaką użytkownik wysyłający żądanie pełni na zajęciach. Jeśli użytkownik jest nauczycielem, użyj następującego 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
Odpowiedź ucznia może być nieprzesłana, oddana lub zwrócona. Pole stanu w StudentSubmission
wskazuje aktualny 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 przyjmują 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 jest właścicielem StudentSubmission
, może je oddać lub odzyskać.
Można odzyskać tylko oddane przez siebie zadania. Nauczyciele zajęć mogą zwrócić tylko StudentSubmission
, który jest oddany.
Ocenianie odpowiedzi uczniów
Zasób StudentSubmission
ma 2 pola do przechowywania ocen: assignedGrade
, czyli ocena przekazywana uczniom, i draftGrade
, która jest oceną wstępną widoczną 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 korzystania z interfejsu Classroom nauczyciele nie mogą wystawiać ocen, dopóki nie zapiszą najpierw oceny roboczej. Przypisaną ocenę można następnie zwrócić uczniowi. Aplikacje muszą emulować to zachowanie. Aplikacja może ocenić projekty uczniów na 2 sposoby:
Przypisz tylko:
draftGrade
. Jest to przydatne na przykład wtedy, gdy nauczyciel może ręcznie sprawdzić oceny przed ich ukończeniem. Uczniowie nie widzą ocen roboczych.Aby w pełni ocenić projekt, przypisz zarówno
draftGrade
, jak iassignedGrade
.
Wyświetlanie listy przypisanych ocen
Aby wyświetlić wszystkie oceny z danego elementu 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'))}")