UI Classroom mendukung lima jenis Tugas Kelas: Tugas,
Tugas Kuis, Pertanyaan jawaban singkat, Pertanyaan pilihan ganda, dan
Materi. Classroom API saat ini mendukung tiga jenis ini, yang
disebut sebagai CourseWorkType
untuk API: Tugas, Pertanyaan jawaban
pendek, dan Pertanyaan pilihan ganda.
Untuk mengakses fungsi ini, Anda dapat menggunakan referensi CourseWork, yang mewakili Tugas atau Pertanyaan yang telah diberikan kepada siswa dalam kursus tertentu, termasuk materi dan detail tambahan, seperti batas waktu atau skor maksimum.
Selain resource CourseWork, Anda dapat mengelola tugas yang sudah selesai
dengan resource StudentSubmission
. Bagian berikut menjelaskannya
secara lebih mendetail.
Membuat tugas
Tugas hanya dapat dibuat atas nama pengajar kursus dan
mencoba membuat tugas dalam kursus atas nama siswa akan menghasilkan
error PERMISSION_DENIED
403. Demikian pula, admin domain juga tidak dapat membuat
tugas untuk kursus yang tidak mereka ajar dan mencoba melakukannya melalui API
juga akan menghasilkan error 403 PERMISSION_DENIED
.
Saat membuat tugas menggunakan metode courses.courseWork.create
, Anda dapat melampirkan link sebagai materials
, seperti yang ditunjukkan dalam kode contoh di bawah ini:
Java
Python
Hasilnya mencakup ID yang ditetapkan server yang dapat digunakan untuk mereferensikan penetapan dalam permintaan API lainnya.
Untuk menyertakan materi tertaut dalam tugas yang dibuat melalui Classroom API, gunakan Resource link, yang menentukan URL target. Classroom otomatis mengambil judul dan gambar thumbnail. Classroom API juga secara native mendukung materi Google Drive dan YouTube, yang dapat disertakan dengan resource DriveFile atau resource YouTubeVideo dengan cara yang serupa.
Untuk menentukan batas waktu, tetapkan kolom dueDate
dan dueTime
ke waktu UTC yang sesuai. Batas waktu harus pada masa mendatang.
Mengambil tugas dan pertanyaan
Anda dapat mengambil tugas dan pertanyaan untuk siswa dan pengajar kursus yang sesuai atau oleh administrator domain. Untuk mengambil tugas atau pertanyaan tertentu, gunakan Course.courseWork.get. Untuk mengambil semua tugas atau pertanyaan (secara opsional cocok dengan beberapa kriteria), gunakan courses.courseWork.list.
Cakupan yang diperlukan bergantung pada peran yang dimiliki pengguna yang meminta dalam kursus. Jika pengguna adalah siswa, gunakan salah satu cakupan berikut:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Jika pengguna adalah pengajar atau administrator domain, gunakan salah satu cakupan berikut:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Memiliki izin untuk mengambil tugas atau pertanyaan tidak menyiratkan izin untuk mengakses materi atau metadata materi. Dalam praktiknya, hal ini berarti administrator tidak dapat melihat judul file Drive yang dilampirkan jika mereka bukan anggota kursus. Jika Anda ingin mengizinkan administrator mengakses file pengguna, lihat panduan delegasi seluruh domain.
Kelola respons siswa
Resource StudentSubmission
menunjukkan tugas yang telah dilakukan dan nilai siswa untuk tugas atau
pertanyaan. Resource StudentSubmission
secara implisit dibuat untuk setiap siswa saat pertanyaan atau
tugas baru dibuat.
Bagian berikut menjelaskan tindakan umum yang mengelola respons siswa.
Mengambil respons siswa
Siswa dapat mengambil kiriman mereka sendiri, pengajar dapat mengambil kiriman
untuk semua siswa di kursus mereka, dan administrator domain dapat mengambil semua
pengiriman untuk semua siswa di domain mereka. Setiap kiriman siswa diberi
ID; jika Anda mengetahui ID tersebut, gunakan
courses.courseWork.studentSubmissions.get
untuk mengambilnya.
Gunakan metode courses.courseWork.studentSubmissions.list
untuk mendapatkan
resource StudentSubmission
yang cocok dengan beberapa kriteria, seperti yang ditunjukkan dalam
contoh berikut:
Java
Python
Ambil resource StudentSubmission
milik siswa tertentu dengan
menentukan parameter userId
, seperti yang ditunjukkan dalam contoh berikut:
Java
Python
Siswa diidentifikasi menurut ID unik atau alamat email pengguna, seperti
yang ditampilkan oleh Google Admin SDK. Pengguna saat ini juga dapat merujuk ke ID-nya
sendiri menggunakan singkatan "me"
.
Anda juga dapat menerima kiriman siswa untuk semua tugas dalam
kursus. Untuk melakukannya, gunakan "-"
literal sebagai courseWorkId
, seperti yang ditunjukkan dalam contoh berikut:
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()
Cakupan yang diperlukan bergantung pada peran yang dimiliki pengguna yang meminta dalam kursus. Gunakan cakupan berikut jika pengguna adalah pengajar atau administrator domain:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Gunakan cakupan berikut jika pengguna adalah seorang siswa:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Memiliki izin untuk mengambil kiriman siswa tidak berarti izin untuk mengakses lampiran atau metadata lampiran. Dalam praktiknya, ini berarti bahwa administrator mungkin tidak melihat judul file Drive yang dilampirkan jika mereka bukan anggota kursus. Jika Anda ingin mengizinkan akses administrator ke file pengguna, lihat panduan delegasi seluruh domain.
Menambahkan lampiran ke respons siswa
Anda dapat melampirkan link ke kiriman siswa dengan melampirkan resource Link
,
DriveFile
, atau YouTubeVideo
. Hal ini dilakukan dengan
courses.courseWork.studentSubmissions.modifyAttachments
, seperti yang ditunjukkan pada
contoh berikut:
Java
Python
Lampiran Link ditentukan oleh URL target; Classroom akan otomatis mengambil judul dan gambar thumbnail. Anda dapat mempelajari materi lain di halaman referensinya masing-masing.
StudentSubmission
hanya dapat diubah oleh pengajar kursus atau
siswa yang memilikinya. Anda hanya dapat melampirkan Materials
jika
CourseWorkType
kiriman siswa adalah ASSIGNMENT
.
Cakupan yang diperlukan bergantung pada peran yang dimiliki pengguna yang meminta dalam kursus. Gunakan cakupan berikut jika pengguna adalah pengajar:
https://www.googleapis.com/auth/classroom.coursework.students
Gunakan cakupan berikut jika pengguna adalah seorang siswa:
https://www.googleapis.com/auth/classroom.coursework.me
Kelola status respons siswa
Respons siswa mungkin telah dibatalkan pengirimannya, diserahkan, atau dikembalikan. Kolom status
di StudentSubmission
menunjukkan status saat ini. Untuk mengubah status, panggil
salah satu metode berikut:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Semua metode ini menggunakan isi kosong. Contoh:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Hanya siswa yang memiliki StudentSubmission
yang dapat menyerahkan atau mengklaimnya kembali.
Hanya pengiriman yang telah dikirim yang dapat diklaim kembali. Pengajar kursus hanya dapat menampilkan
StudentSubmission
yang berstatus diserahkan.
Menilai respons siswa
Resource StudentSubmission
memiliki dua kolom untuk menyimpan nilai:
assignedGrade
, yang merupakan nilai yang dilaporkan kepada siswa, dan draftGrade
,
yang merupakan nilai tentatif yang hanya terlihat oleh pengajar. Kolom ini diperbarui
menggunakan courses.courseWork.studentSubmissions.patch
dengan mask kolom
yang berisi kolom yang sesuai, seperti yang ditunjukkan dalam contoh berikut.
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()
Saat menggunakan UI Classroom, pengajar tidak dapat menetapkan nilai sebelum menyimpan draf nilai terlebih dahulu. Kemudian, nilai yang diberikan dapat dikembalikan kepada siswa. Aplikasi perlu meniru perilaku ini. Aplikasi Anda dapat memberi nilai tugas siswa dengan salah satu dari dua cara:
Tetapkan
draftGrade
saja. Hal ini berguna, misalnya, untuk memungkinkan pengajar meninjau nilai secara manual sebelum menyelesaikannya. Siswa tidak dapat melihat nilai draf.Tetapkan
draftGrade
danassignedGrade
untuk menilai tugas sepenuhnya.
Mencantumkan nilai yang diberikan
Anda dapat mencantumkan semua nilai untuk item tugas mata pelajaran tertentu dengan mempelajari
objek respons metode 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'))}")