Classroom kullanıcı arayüzü, beş sınıf sınıf türünü destekler: Ödevler, Test Ödevleri, Kısa yanıtlı sorular, Çoktan seçmeli sorular ve Materyaller. Classroom API şu anda bu türlerden üçünü desteklemektedir. Bunlar API için CourseWorkType
olarak bilinir: Ödevler, Kısa yanıt soruları ve Çoktan seçmeli sorular.
Bu işleve erişmek için teslim tarihi veya maksimum puan gibi tüm ek materyaller ve ayrıntılar dahil olmak üzere belirli bir dersteki öğrencilere atanmış olan Ödev veya Soruyu temsil eden CourseWork kaynağını kullanabilirsiniz.
CourseWork kaynağına ek olarak, tamamlanmış ödevleri StudentSubmission
kaynağıyla yönetebilirsiniz. Aşağıdaki bölümlerde bu işlemler daha ayrıntılı olarak açıklanmaktadır.
Ödev oluşturma
Ödevler yalnızca ders öğretmenlerinin adına oluşturulabilir ve bir öğrenci adına ödev oluşturma girişiminde bulunursanız 403 PERMISSION_DENIED
hatası verilir. Benzer şekilde, alan yöneticileri, öğretmedikleri dersler için de ödev oluşturamaz ve bunu API aracılığıyla yapmaya çalışırsa 403 PERMISSION_DENIED
hatası da oluşur.
courses.courseWork.create
yöntemini kullanarak atama oluştururken aşağıdaki örnek kodda gösterilen bağlantıları materials
olarak ekleyebilirsiniz:
Java
Python
Sonuç, diğer API isteklerinde atamaya referans vermek için kullanılabilecek, sunucu tarafından atanmış bir tanımlayıcı içerir.
Bağlı materyalleri Classroom API üzerinden oluşturulan bir ödeve eklemek için hedef URL'yi belirterek bir Bağlantı kaynağı kullanın. Classroom, başlık ve küçük resmi otomatik olarak getirir. Classroom API, benzer bir şekilde bir DriveFile kaynağı veya YouTubeVideo kaynağı ile eklenebilen Google Drive ve YouTube materyallerini de yerel olarak destekler.
Son tarih belirtmek için dueDate
ve dueTime
alanlarını ilgili UTC saatine ayarlayın. Son tarih, gelecekteki bir tarih olmalıdır.
Ödev ve soruları alma
İlgili kursun öğrencileri veya öğretmenleri için ya da bir alan yöneticisi tarafından ödev ve soru alabilirsiniz. Belirli bir ödevi veya soruyu almak için kurslar.courseWork.get'i kullanın. Tüm ödevleri veya soruları (isteğe bağlı olarak bazı ölçütlerle eşleşir) almak içincourses.courseWork.list'i kullanın.
Gerekli kapsam, istekte bulunan kullanıcının kurstaki rolüne bağlıdır. Kullanıcı öğrenciyse aşağıdaki kapsamlardan birini kullanın:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Kullanıcı bir öğretmen veya alan yöneticisiyse aşağıdaki kapsamlardan birini kullanın:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Ödev veya soru alma izninin olması, materyallere ya da materyal meta verilerine erişim izni olduğu anlamına gelmez. Uygulamada bu, yöneticinin derse üye olmayan bir ekli Drive dosyasının başlığını görmeyebileceği anlamına gelir. Yöneticilerin kullanıcı dosyalarına erişmesine izin vermek istiyorsanız alan genelinde yetki kılavuzuna bakın.
Öğrenci yanıtlarını yönetin
StudentSubmission
kaynağı, bir öğrencinin ödev veya soru için yaptığı çalışmaları ve notlarını temsil eder. Bir StudentSubmission
kaynağı, yeni bir soru veya ödev oluşturulduğunda her öğrenci için dolaylı olarak oluşturulur.
Aşağıdaki bölümlerde, öğrenci yanıtlarını yöneten genel işlemler açıklanmaktadır.
Öğrenci yanıtlarını alma
Öğrenciler kendi gönderimlerini, öğretmenler ise derslerindeki tüm öğrenciler için gönderimleri alabilir. Alan yöneticileri de alanlarındaki tüm öğrenciler için tüm gönderimleri alabilir. Her öğrenci gönderimine bir tanımlayıcı atanır. Tanımlayıcıyı biliyorsanız almak için courses.courseWork.studentSubmissions.get
kullanın.
Aşağıdaki örnekte gösterildiği gibi, bazı ölçütlerle eşleşen StudentSubmission
kaynaklarını almak için courses.courseWork.studentSubmissions.list
yöntemini kullanın:
Java
Python
Aşağıdaki örnekte gösterildiği gibi, userId
parametresini belirterek belirli bir öğrenciye ait StudentSubmission
kaynaklarını alın:
Java
Python
Öğrenciler, Google Yönetici SDK'sı tarafından döndürülen benzersiz kimlik veya e-posta adresiyle tanımlanır. Mevcut kullanıcı, "me"
kısaltmasını kullanarak kendi kimliğine de başvurabilir.
Ayrıca, bir dersteki tüm ödevler için öğrenci gönderimleri de alabilirsiniz. Bunu yapmak için aşağıdaki örnekte gösterildiği gibi courseWorkId
yerine "-"
değerini kullanın:
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()
Gerekli kapsam, istekte bulunan kullanıcının kurstaki rolüne bağlıdır. Kullanıcı bir öğretmen veya alan yöneticisiyse aşağıdaki kapsamı kullanın:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Kullanıcı öğrenciyse aşağıdaki kapsamı kullanın:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Bir öğrenci gönderimini alma izninin olması, eklere veya ek meta verilerine erişim izni olduğu anlamına gelmez. Uygulamada bu, yönetici tarafından ekli Drive üyesi olmayan bir Drive dosyasının başlığını görmeyebileceği anlamına gelir. Yöneticilerin kullanıcı dosyalarına erişmesine izin vermek istiyorsanız alan genelinde yetki kılavuzunu inceleyin.
Öğrenci yanıtına dosya ekleme
Link
, DriveFile
veya YouTubeVideo
kaynağı ekleyerek öğrenci gönderimine bağlantı ekleyebilirsiniz. Bu işlem aşağıdaki örnekte gösterildiği gibi courses.courseWork.studentSubmissions.modifyAttachments
ile yapılır:
Java
Python
Bağlantı eki, hedef URL ile tanımlanır. Classroom, başlığı ve küçük resmi otomatik olarak getirir. Diğer materyaller hakkında kendi referans sayfalarından bilgi edinebilirsiniz.
StudentSubmission
yalnızca ders öğretmeni veya ders sahibi tarafından değiştirilebilir. Materials
öğesini yalnızca öğrenci gönderiminin CourseWorkType
değeri ASSIGNMENT
olduğunda ekleyebilirsiniz.
Gerekli kapsam, istekte bulunan kullanıcının kurstaki rolüne bağlıdır. Kullanıcı bir öğretmense aşağıdaki kapsamı kullanın:
https://www.googleapis.com/auth/classroom.coursework.students
Kullanıcı öğrenciyse aşağıdaki kapsamı kullanın:
https://www.googleapis.com/auth/classroom.coursework.me
Öğrencinin yanıt durumunu yönet
Öğrenci yanıtı iptal edilebilir, teslim edilebilir veya geri verilebilir. StudentSubmission
içindeki durum alanı, mevcut durumu gösterir. Durumu değiştirmek için aşağıdaki yöntemlerden birini arayın:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Tüm bu yöntemler boş bir gövdeye sahip olur. Örnek:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Yalnızca StudentSubmission
sahibi olan öğrenci bu öğeyi teslim edebilir veya geri alabilir.
Yalnızca teslim edilen bir gönderim geri alınabilir. Ders öğretmenleri yalnızca teslim edilmiş durumda olan bir StudentSubmission
döndürebilir.
Öğrenci yanıtlarına not verme
StudentSubmission
kaynağı, notları depolayacak iki alan içerir:
Öğrencilere verilen not olan assignedGrade
ve yalnızca öğretmenler tarafından görünen geçici bir not olan draftGrade
. Bu alanlar, aşağıdaki örnekte gösterildiği gibi, uygun alanları içeren bir alan maskesiyle courses.courseWork.studentSubmissions.patch
kullanılarak güncellenir.
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()
Classroom kullanıcı arayüzüyle çalışırken, öğretmenler ilk olarak bir taslak not kaydedene kadar not atayamazlar. Daha sonra, atanan not bir öğrenciye geri verilebilir. Uygulamaların bu davranışı taklit etmesi gerekir. Uygulamanız, bir öğrencinin ödevine iki yöntemden birini kullanarak not verebilir:
Yalnızca
draftGrade
atayın. Bu özellik, örneğin öğretmenin tamamlamadan önce notları manuel olarak incelemesine olanak tanır. Öğrenciler notlarını göremez.Bir ödeve tam not vermek için
draftGrade
veassignedGrade
atayın.
Atanan notları listeleme
courses.courseWork.studentSubmissions.list
yönteminin yanıt nesnesini inceleyerek belirli bir sınıf çalışması öğesi için tüm notları listeleyebilirsiniz:
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'))}")