בממשק המשתמש של Classroom יש תמיכה בחמישה סוגים של עבודות: מטלות, מטלות בוחן, שאלות עם תשובות קצרות, שאלות אמריקאיות וחומרים. נכון לעכשיו, ב-Classroom API יש תמיכה בשלושה מהסוגים האלה (CourseWorkType
): מטלות, שאלות עם תשובות קצרות ושאלות אמריקאיות.
Materials
לCourseWorkType
משאבים: מטלות, שאלות עם תשובות קצרות ושאלות אמריקאיות.
כדי לקבל גישה לפונקציונליות הזו, תוכלו להשתמש במשאב CourseWork, שמייצג מטלה או שאלה שהוקצו לתלמידים בקורס מסוים, כולל חומרים ופרטים נוספים כמו תאריך הגשה או ציון מקסימלי.
בנוסף למשאב CourseWork, תוכלו לנהל מטלות שהושלמו בעזרת המשאב StudentSubmission
. בחלקים הבאים נתאר אותם בפירוט.
יצירת מטלות
אפשר ליצור מטלות רק בשם מורים של הקורס. ניסיון ליצור מטלות בקורס בשם התלמיד יגרום לשגיאה 403 PERMISSION_DENIED
. באופן דומה, מנהלי דומיינים גם לא יכולים ליצור הקצאות לקורסים שהם לא מלמדים, וניסיון לעשות זאת דרך ה-API יובילו גם לשגיאה 403 PERMISSION_DENIED
.
כשיוצרים מטלות בשיטה courses.courseWork.create
, אפשר לצרף קישורים בתור materials
, כפי שמוצג בקוד לדוגמה הבא:
Java
Python
התוצאה כוללת מזהה שהוקצה על ידי שרת, שיכול לשמש להפניה להקצאה בבקשות API אחרות.
כדי לכלול חומרים מקושרים במטלה שנוצרה באמצעות Classroom API, צריך להשתמש במשאב קישור ולציין את כתובת היעד. המערכת של Classroom מאחזרת באופן אוטומטי את השם ואת התמונה הממוזערת של הסרטון. ממשק ה-API של Classroom תומך גם הוא במקור ב-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
שתואמים לקריטריונים מסוימים, כמו בדוגמה הבאה:
Java
Python
מאחזרים StudentSubmission
משאבים ששייכים לתלמיד מסוים על ידי ציון הפרמטר userId
, כמו בדוגמה הבאה:
Java
Python
המערכת מזהה את התלמידים באמצעות המזהה הייחודי או כתובת האימייל של המשתמש, כפי שהם מוחזרים באמצעות Google Admin SDK. המשתמש הנוכחי יכול גם להפנות למזהה שלו באמצעות הקיצור "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
הגדרת קובץ של קישור מתבצעת לפי כתובת אתר היעד. ב-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'))}")