رابط کاربری کلاس از پنج نوع کار کلاسی پشتیبانی می کند: تکالیف، تکالیف امتحانی، سؤالات پاسخ کوتاه، سؤالات چند گزینه ای و مواد. Classroom API در حال حاضر از سه نوع از این نوع پشتیبانی می کند که به عنوان CourseWorkType
برای API شناخته می شوند: تکالیف، سؤالات پاسخ کوتاه و سؤالات چند گزینه ای.
برای دسترسی به این قابلیت، میتوانید از منبع CourseWork استفاده کنید، که نشاندهنده یک تکلیف یا سؤال است که در یک دوره خاص به دانشآموزان اختصاص داده شده است، از جمله هر گونه مطالب و جزئیات اضافی، مانند تاریخ سررسید یا حداکثر امتیاز.
علاوه بر منبع CourseWork، می توانید تکالیف تکمیل شده را با منبع StudentSubmission
مدیریت کنید. بخش های بعدی این موارد را با جزئیات بیشتری توضیح می دهند.
تکالیف ایجاد کنید
تکالیف را فقط می توان از طرف معلم یا معلمان دوره ایجاد کرد و تلاش برای ایجاد تکالیف در یک دوره از طرف یک دانش آموز منجر به خطای 403 PERMISSION_DENIED
می شود. به همین ترتیب، مدیران دامنه نیز نمیتوانند برای دورههایی که تدریس نمیکنند، تکالیف ایجاد کنند و تلاش برای انجام این کار از طریق API نیز منجر به خطای 403 PERMISSION_DENIED
میشود.
هنگام ایجاد تکالیف با استفاده از روش courses.courseWork.create
، می توانید پیوندهایی را به عنوان materials
پیوست کنید که در کد نمونه زیر نشان داده شده است:
جاوا
پایتون
نتیجه شامل یک شناسه اختصاص داده شده توسط سرور است که می تواند برای ارجاع به انتساب در سایر درخواست های API استفاده شود.
برای گنجاندن مطالب مرتبط در تکلیفی که از طریق Classroom API ایجاد شده است، از یک منبع پیوند استفاده کنید و URL مورد نظر را مشخص کنید. Classroom به طور خودکار عنوان و تصویر کوچک را واکشی می کند. Classroom API همچنین به صورت بومی از مطالب Google Drive و YouTube پشتیبانی میکند، که میتواند با یک منبع DriveFile یا منبع YouTubeVideo به روشی مشابه اضافه شود.
برای تعیین تاریخ سررسید، فیلدهای dueDate
و dueTime
را روی زمان UTC مربوطه تنظیم کنید. تاریخ سررسید باید در آینده باشد.
تکالیف و سوالات را بازیابی کنید
شما می توانید تکالیف و سوالات را برای دانش آموزان و معلمان دوره مربوطه یا توسط مدیر دامنه بازیابی کنید. برای بازیابی یک تکلیف یا سؤال خاص، از 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
که با برخی از معیارها مطابقت دارند، استفاده کنید:
جاوا
پایتون
همانطور که در نمونه زیر نشان داده شده است، منابع StudentSubmission
را که متعلق به یک دانش آموز خاص است، با تعیین پارامتر userId
بازیابی کنید:
جاوا
پایتون
دانشآموزان با شناسه منحصربهفرد یا آدرس ایمیل کاربر، همانطور که توسط Google Admin SDK بازگردانده میشود، شناسایی میشوند. کاربر فعلی همچنین ممکن است با استفاده از خلاصه "me"
به شناسه خود مراجعه کند.
همچنین امکان دریافت مطالب ارسالی دانشآموز برای همه تکالیف در یک دوره وجود دارد. برای انجام این کار، همانطور که در نمونه زیر نشان داده شده است، از کلمه "-"
به عنوان courseWorkId
استفاده کنید:
جاوا
service.courses().courseWork().studentSubmissions()
.list(courseId, "-")
.set("userId", userId)
.execute();
پایتون
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
انجام می شود، همانطور که در نمونه زیر نشان داده شده است:
جاوا
پایتون
پیوست پیوند با URL هدف تعریف می شود. Classroom به طور خودکار عنوان و تصویر کوچک را واکشی می کند. شما می توانید در مورد سایر مواد در صفحات مرجع مربوطه آنها اطلاعات کسب کنید.
StudentSubmission
فقط می تواند توسط یک معلم دوره یا توسط دانش آموزی که مالک آن است اصلاح شود. فقط در صورتی میتوانید Materials
پیوست کنید که CourseWorkType
ارسالی دانشجو، ASSIGNMENT
باشد.
محدوده مورد نیاز به نقشی که کاربر درخواست کننده در دوره دارد بستگی دارد. اگر کاربر معلم است از دامنه زیر استفاده کنید:
-
https://www.googleapis.com/auth/classroom.coursework.students
اگر کاربر دانشجو است از دامنه زیر استفاده کنید:
-
https://www.googleapis.com/auth/classroom.coursework.me
مدیریت وضعیت پاسخ دانش آموز
پاسخ دانش آموز ممکن است ارسال نشود، تحویل داده شود یا برگردانده شود. فیلد State در StudentSubmission
وضعیت فعلی را نشان می دهد. برای تغییر وضعیت، یکی از روش های زیر را فراخوانی کنید:
-
courses.courseWork.studentSubmissions.turnIn
-
courses.courseWork.studentSubmissions.return
-
courses.courseWork.studentSubmissions.reclaim
همه این روش ها بدن خالی می گیرند. مثال:
جاوا
پایتون
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
با یک فیلد ماسک حاوی فیلدهای مناسب، همانطور که در نمونه زیر نشان داده شده است، به روز می شوند.
جاوا
پایتون
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 UI، معلمان تا زمانی که ابتدا یک نمره پیشنویس را ذخیره نکرده باشند، نمیتوانند نمره تعیین کنند. سپس نمره تعیین شده را می توان به دانش آموز برگرداند. برنامه ها باید این رفتار را تقلید کنند. درخواست شما می تواند تکلیف دانش آموز را به یکی از دو روش درجه بندی کند:
فقط
draftGrade
اختصاص دهید. برای مثال، به معلم اجازه می دهد نمرات را قبل از نهایی کردن آنها به صورت دستی بررسی کند، مفید است. دانش آموزان نمی توانند نمرات پیش نویس را ببینند.هم
draftGrade
و همassignedGrade
را برای درجه بندی کامل یک تکلیف اختصاص دهید.
نمرات اختصاص داده شده را فهرست کنید
میتوانید با کاوش در شی پاسخ متد courses.courseWork.studentSubmissions.list
، همه نمرات را برای یک آیتم درسی خاص فهرست کنید:
جاوا
پایتون
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'))}")