Interfejs Classroom obsługuje 5 typów zadań: Projekty, Projekty quizu, Pytania jednokrotnego wyboru, Pytania jednokrotnego wyboru i Materiały. Interfejs API Classroom obsługuje obecnie 3 z tych typów: CourseWorkType
(Projekty): pytania w Projektach, 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 przydzielone uczniom na określonych zajęciach, w tym wszelkie dodatkowe materiały i informacje, takie jak termin lub maksymalny wynik.
Oprócz zasobu CourseWork możesz zarządzać ukończonymi projektami za pomocą zasobu StudentSubmission
. Szczegółowo opisujemy to w kolejnych sekcjach.
Tworzenie projektów
Projekty można utworzyć tylko w imieniu nauczycieli zajęć, a próba utworzenia projektów w ich imieniu spowoduje błąd 403 PERMISSION_DENIED
. Podobnie administratorzy domeny nie mogą także przypisywać projektów w przypadku zajęć, których nie uczą, a próbujące tego zrobić przy użyciu interfejsu API również zwracają błąd 403 PERMISSION_DENIED
.
Podczas tworzenia projektów za pomocą metody courses.courseWork.create
możesz dołączać linki jako materials
, tak jak w przykładowym kodzie poniżej:
Java
Python
Wynik zawiera przypisany przez serwer identyfikator, którego można użyć do odwoływania się do przypisania w innych żądaniach do interfejsu API.
Aby dołączyć do projektu linki do materiałów utworzonych w interfejsie Classroom API, użyj zasobu linku, który określa docelowy adres URL. Classroom automatycznie pobiera tytuł i miniaturę. Interfejs Classroom API natywnie obsługuje też Dysk Google i materiały w YouTube, które w podobny sposób można dodać do zasobu DriveFile lub 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 danego kursu lub administratora domeny. Aby znaleźć konkretny projekt lub pytanie, użyj kursów.coursework.get. Aby pobrać wszystkie projekty lub pytania (opcjonalnie odpowiadające określonym kryteriom), użyj kursucourse.courseWork.list.
Wymagany zakres zależy od roli, jaką użytkownik w tym kursie ma w swoim kursie. 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
Uprawnienia do pobierania projektu lub pytania nie oznaczają uprawnień dostępu do materiałów bądź metadanych materiałów. W praktyce oznacza to, że administrator może nie widzieć tytułu załączonego pliku z Dysku, jeśli nie jest on uczestnikiem zajęć. Jeśli chcesz zezwolić administratorom na dostęp do plików użytkowników, zapoznaj się z przewodnikiem Przekazywanie dostępu w całej domenie.
Zarządzanie odpowiedziami uczniów
Zasób StudentSubmission
reprezentuje zadanie ucznia i ocenę za jego zadanie lub pytanie. Po utworzeniu nowego pytania lub projektu dla każdego ucznia jest domyślnie tworzony zasób StudentSubmission
.
W kolejnych sekcjach opisujemy częste działania służące do zarządzania odpowiedziami uczniów.
Pobieranie odpowiedzi uczniów
Uczniowie mogą pobierać swoje prace, nauczyciele mogą pobierać zadania wszystkich uczniów ze swoich zajęć, a administratorzy domeny mogą pobierać wszystkie zadania ze wszystkich swoich uczniów. Do każdego zadania ucznia jest przypisywany identyfikator. Jeśli znasz identyfikator, pobierz go za pomocą narzędzia courses.courseWork.studentSubmissions.get
.
Użyj metody courses.courseWork.studentSubmissions.list
, aby pobrać 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
zgodnie z tym przykładem:
Java
Python
Uczniowie mogą poznać unikalny identyfikator lub adres e-mail użytkownika, korzystając z pakietu SDK Google Admin. Bieżący użytkownik może również odwoływać się do swojego identyfikatora za pomocą skrótu "me"
.
Możesz też pobrać zadania uczniów ze wszystkich projektów w ramach tego kursu. 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, jaką użytkownik w tym kursie ma w swoim kursie. Użyj tego zakresu, jeśli użytkownik jest nauczycielem lub administratorem domeny:
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
Uprawnienia do pobierania zadań uczniów nie oznaczają, że mają one 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 członkiem 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.
Dodawanie załączników do odpowiedzi ucznia
Możesz też dodawać linki do zadań uczniów za pomocą zasobu Link
, DriveFile
lub YouTubeVideo
. Możesz to zrobić w courses.courseWork.studentSubmissions.modifyAttachments
, tak jak w tym przykładzie:
Java
Python
Załącznik jest określany przez docelowy adres URL; Classroom automatycznie pobiera tytuł i miniaturę. Pozostałe materiały można znaleźć na odpowiednich stronach referencyjnych.
StudentSubmission
może modyfikować tylko nauczyciel prowadzący zajęcia lub uczeń, który jest właścicielem. Możesz dołączyć Materials
tylko wtedy, gdy CourseWorkType
zadania przesłanego przez ucznia to ASSIGNMENT
.
Wymagany zakres zależy od roli, jaką użytkownik w tym kursie ma w swoim kursie. Użyj tego zakresu, jeśli użytkownik jest nauczycielem:
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 ucznia
Odpowiedź ucznia może zostać wycofana, oddana lub zwrócona. 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 wymagają pustej treści. 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 konta StudentSubmission
, może je oddać lub odzyskać.
Możesz tylko wykorzystać oddane zadanie. Nauczyciele kursów mogą zwracać tylko StudentSubmission
w stanie oddanych.
Ocenianie odpowiedzi uczniów
Zasób StudentSubmission
zawiera 2 pola do przechowywania ocen: assignedGrade
– ocena zgłoszona uczniom i draftGrade
– ocena wstępna 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 w interfejsie Classroom nauczyciele nie mogą przypisywać ocen, dopóki nie zapiszą oceny roboczej. Przypisana ocena może zostać zwrócona uczniowi. Aplikacje muszą emulować to zachowanie. Aplikacja może oceniać projekty uczniów na 2 sposoby:
Przypisz tylko:
draftGrade
. Jest to przydatne na przykład wtedy, gdy chcesz, aby nauczyciel ręcznie sprawdził oceny przed ukończeniem oceny. Uczniowie nie widzą ocen roboczych.Przypisz wartości
draftGrade
iassignedGrade
, aby w pełni ocenić zadanie.
Wyświetl listę przypisanych ocen
Możesz wyświetlić wszystkie oceny dla konkretnego elementu zadania, przeglądając obiekt odpowiedzi metody courses.courseWork.studentSubmissions.list
:
Java
ListStudentSubmissionsResponse response = service.courses().courseWork().studentSubmissions()
.list(courseId, courseWorkId)
.execute();
if (response.getStudentSubmissions() != null) {
List<StudentSubmission> submissionList = response.getStudentSubmissions();
for (StudentSubmission submission : submissionList) {
System.out.printf("User ID %s, Assigned grade: %s", submission.getUserId(),
submission.getAssignedGrade());
}
} else {
System.out.println("No submissions found.");
}
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'))}")