تتوافق واجهة مستخدم Classroom مع خمسة أنواع من الواجبات الدراسية: "المهام الدراسية"،
مهام الاختبار وأسئلة الإجابات القصيرة وأسئلة الاختيار من متعدد
المواد. تتيح واجهة Classroom API حاليًا ثلاثة من هذه الأنواع، وهي
تُعرف باسم CourseWorkType
لواجهة برمجة التطبيقات: "المهام الدراسية" و"الإجابات القصيرة"
وأسئلة الاختيار من متعدد.
للوصول إلى هذه الوظيفة، يمكنك استخدام مورد CourseWork، الذي يمثل مهمة أو سؤال تم تعيينه للطلاب في دورة تدريبية معينة، بما في ذلك أي مواد وتفاصيل إضافية، مثل موعد التاريخ أو الحد الأقصى للنقاط.
بالإضافة إلى مورد CourseWork، يمكنك إدارة المهام المكتملة
باستخدام المرجع StudentSubmission
. تصف الأقسام التالية هذه
بمزيد من التفصيل.
إنشاء المهام الدراسية
يمكن إنشاء المهام الدراسية فقط نيابةً عن معلّمي الدورة التدريبية.
محاولة إنشاء مهام في دورة تدريبية نيابةً عن طالب
في خطأ 403 PERMISSION_DENIED
. وبالمثل، لا يمكن لمشرفي النطاق إنشاء
المهام الدراسية للدورات التدريبية التي لا يدرسونها ويحاولون إجراء ذلك من خلال واجهة برمجة التطبيقات
سيؤدي أيضًا إلى ظهور الخطأ 403 PERMISSION_DENIED
.
عند إنشاء المهام الدراسية باستخدام طريقة courses.courseWork.create
، يمكنك إجراء ما يلي:
يمكنك إرفاق روابط مثل materials
، كما هو موضح في نموذج الرمز أدناه:
Java
Python
تتضمن النتيجة معرّفًا تم تعيينه بواسطة الخادم ويمكن استخدامه للإشارة إلى التعيين في طلبات واجهة برمجة التطبيقات الأخرى.
لتضمين المواد المرتبطة في مهمة تم إنشاؤها عبر Classroom API، استخدام مورد للرابط، مع تحديد عنوان URL المستهدف. يجلب Classroom تلقائيًا العنوان والصورة المصغّرة. كما تدعم Classroom API في الأصل مواد Google Drive وYouTube، والتي يمكنها التي تم تضمينها مع مورد DriveFile أو مرجع YouTube Video الطريقة.
لتحديد تاريخ تسليم، اضبط الحقلين dueDate
وdueTime
على
بالتوقيت العالمي المنسق المقابل. يجب أن يكون تاريخ التسليم في المستقبل.
استرداد المهام والأسئلة
يمكنك استرداد المهام والأسئلة للطلاب والمعلّمين في الدورة التدريبية المقابلة أو من قبل مشرف النطاق. لاسترداد نوع محدد أو مهمة دراسية أو سؤال، استخدِمطرق الخيار "courses.courseWork.get" لاسترداد الكل المهام أو الأسئلة (مطابقة بعض المعايير اختياريًا)، واستخدم courses.courseWork.list.
يعتمد النطاق المطلوب على الدور الذي يقوم به المستخدم مقدم الطلب في دورة سابقة. إذا كان المستخدم طالبًا، يمكنك استخدام أحد النطاقات التالية:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
إذا كان المستخدم معلِّمًا أو مشرف نطاق، يمكنك استخدام أحد الخيارات التالية: النطاقات:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
لا يعني الحصول على إذن باسترداد مهمة دراسية أو سؤال أذونات الوصول إلى المواد أو بيانات التعريف الخاصة بالمواد. عمليًا، يعني هذا حتى لا يرى المشرف عنوان ملف Drive المرفق إذا لست عضوًا في الدورة التدريبية. إذا أردت السماح للمشرفين بالوصول إلى قائمة المستخدمين ، راجع القسم على مستوى النطاق التفويض الدليل.
إدارة ردود الطلاب
StudentSubmission
العمل المنجز ودرجة الطالب في مهمة ما أو
السؤال. StudentSubmission
بشكل ضمني لكل طالب عند طرح سؤال أو
إنشاء المهمة.
توضّح الأقسام التالية الإجراءات الشائعة التي يمكن من خلالها إدارة ردود الطلاب.
استرداد ردود الطلاب
يمكن للطلاب استرداد المهام التي أرسلوها بأنفسهم، كما يستطيع المعلّمون استرداد المهام التي تم إرسالها
لجميع الطلاب في دوراتهم التدريبية، ويمكن لمشرفي النطاقات استرداد جميع
عمليات الإرسال لجميع الطلاب في نطاقهم. تكون كل عملية إرسال طالب
تم تعيين معرِّف إذا كنت تعرف المعرف، فاستخدم
courses.courseWork.studentSubmissions.get
لاسترداده.
استخدم الطريقة courses.courseWork.studentSubmissions.list
للحصول على
موارد StudentSubmission
تطابق بعض المعايير، كما هو موضح في
النموذج التالي:
Java
Python
استرداد موارد StudentSubmission
التي تخص طالبًا معينًا من خلال
لتحديد المعلمة userId
، كما هو موضح في النموذج التالي:
Java
Python
يتم التعرّف على الطلاب من خلال المعرّف الفريد أو عنوان البريد الإلكتروني للمستخدم،
التي تعرضها حزمة تطوير البرامج (SDK) لوحدة تحكُّم المشرف في Google. قد يشير المستخدم الحالي أيضًا إلى طلبات البحث
المعرّف باستخدام اختصار "me"
.
يمكن أيضًا تلقّي تسليمات من الطلاب لجميع المهام الدراسية داخل
دورة سابقة. لإجراء ذلك، استخدِم الحرف "-"
على أنّه courseWorkId
كما هو موضّح في السمة
النموذج التالي:
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()
يعتمد النطاق المطلوب على الدور الذي يؤديه المستخدم الطالب في دورة سابقة. استخدام النطاق التالي إذا كان المستخدم معلّمًا أو نطاقًا المشرف:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
استخدِم النطاق التالي إذا كان المستخدم طالبًا:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
إنّ الحصول على إذن باسترداد المهام التي أرسلها الطالب لا يشير ضمنًا إلى الأذونات للوصول إلى المرفقات أو البيانات الوصفية للمرفقات. عمليًا، هذا يعني أنّ المشرف قد لا يرى عنوان ملف Drive المرفق في حال إذا لم يكونوا أعضاء في الدورة. إذا أردت السماح للمشرفين بالوصول إلى الحساب إلى ملفات المستخدم، فراجع دليل التفويض على مستوى النطاق.
إضافة مرفقات إلى ردّ الطالب
يمكنك إرفاق الروابط إلى المَهمّة الدراسية التي أرسلها الطالب من خلال إرفاق Link
DriveFile
، أو YouTubeVideo
المورد. يتم ذلك باستخدام
courses.courseWork.studentSubmissions.modifyAttachments
، كما هو موضّح في القسم
النموذج التالي:
Java
Python
يتم تحديد مرفق الرابط من خلال عنوان URL المستهدف. سيقوم Classroom تلقائيًا لجلب العنوان والصورة المصغّرة. يمكنك التعرف على المواد الأخرى في الصفحات المرجعية الخاصة بكل منها.
لا يمكن تعديل StudentSubmission
إلا من قِبل معلّم الدورة التدريبية أو من خلال
والطالب الذي يمتلكه. لا يمكنك إرفاق Materials
إلا إذا كانت
قيمة CourseWorkType
لإرسال الطالب هي ASSIGNMENT
.
يعتمد النطاق المطلوب على الدور الذي يقوم به المستخدم مقدم الطلب في دورة سابقة. استخدِم النطاق التالي إذا كان المستخدم معلّمًا:
https://www.googleapis.com/auth/classroom.coursework.students
استخدِم النطاق التالي إذا كان المستخدم طالبًا:
https://www.googleapis.com/auth/classroom.coursework.me
إدارة حالة ردّ الطالب
ربما يتم إلغاء إرسال رد الطالب أو تسليمه أو إرجاعه. حقل الولاية
في StudentSubmission
إلى الحالة الحالية. لتغيير الولاية، اتصل
باستخدام إحدى الطرق التالية:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
تأخذ جميع هذه الطرق نصًا فارغًا. مثال:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
يمكن فقط للطالب الذي يملك StudentSubmission
تسليمها أو استردادها.
لا يمكن استرداد سوى المستند الذي تم تسليمه. يمكن لمعلمي الدورة التدريبية إرجاع
StudentSubmission
الذي لا يزال في حالة التسليم.
وضع درجات لردود الطلاب
يحتوي مورد StudentSubmission
على حقلَين لتخزين الدرجات:
وassignedGrade
، وهو الدرجة التي يتم إبلاغ الطلاب بها، وdraftGrade
،
وهو درجة مبدئية لا تظهر سوى للمعلمين. تم تعديل هذه الحقول.
استخدام courses.courseWork.studentSubmissions.patch
مع قناع حقل
التي تحتوي على الحقول المناسبة، كما هو موضح في النموذج التالي.
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، لا يمكن للمعلّمين تعيين درجة حتى قد حفظوا أولاً درجة أولية. يمكن بعد ذلك إرجاع الدرجة التي تم تعيينها إلى طالب. ويجب أن تحاكي التطبيقات هذا السلوك. يمكن لتطبيقك لوضع درجة على مهمة الطالب بإحدى الطريقتين التاليتين:
يمكنك تعيين
draftGrade
فقط. ويكون هذا مفيدًا، على سبيل المثال، للسماح للمعلم لمراجعة الدرجات يدويًا قبل الانتهاء منها. لا يمكن للطلاب الاطّلاع على الدرجات الأولية.يمكنك تعيين كل من
draftGrade
وassignedGrade
لوضع الدرجات على مهمة دراسية بالكامل.
إدراج الدرجات التي تم تعيينها
يمكنك سرد جميع الدرجات لعنصر معين من مهام الدورة من خلال استكشاف
كائن استجابة الطريقة 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'))}")