Classroom UI 支援五種課堂作業類型:作業、
測驗作業、簡答題、選擇題及
教材。Classroom API 目前支援這三種,
在 API 中稱為 CourseWorkType
:指派作業、簡答題
問題和選擇題
如要使用這項功能,您可以使用 CourseWork 資源 ,代表已指派給學生的「作業」或「問題」 包括任何補充教材和細節,例如特定課程的截止日期 日期或最高分數
除了 CourseWork 資源外,您也可以管理已完成的作業
使用 StudentSubmission
資源。以下各節將說明這些
一起來看看吧
建立作業
「只能」代表課程的老師建立作業,
試圖代表學生在課程中建立作業時,結果將
在 403 PERMISSION_DENIED
錯誤發生時。同樣地,網域管理員也無法建立
非教授/企圖透過 API 完成的課程作業
也會產生 403 PERMISSION_DENIED
錯誤。
使用 courses.courseWork.create
方法建立指派作業時,
可以以 materials
的形式附加連結,如以下程式碼範例所示:
Java
Python
結果含有伺服器指派的 ID,可用於參照 其他 API 要求中的指派。
如要在透過 Classroom API 建立的作業中加入連結教材,請按照下列步驟操作: 請使用連結資源,並將 目標網址Classroom 會自動擷取標題和縮圖圖片, Classroom API 也內建支援 Google 雲端硬碟和 YouTube 教材, 隨附於 DriveFile 資源,或 YouTubeVideo 資源 。
如要指定截止日期,請將 dueDate
和 dueTime
欄位設為
對應的世界標準時間截止日必須設在未來。
擷取作業和問題
您可以擷取下列學生和老師的作業和問題: 課程或網域管理員。如果要擷取 作業或問題,請使用 course.courseWork.get。擷取全部 作業或問題 (也可選擇比對某些條件),再使用 courses.courseWork.list.
所需範圍取決於提出要求的使用者所具備的角色 稍後您會在 BigQueryML AutoML 和自訂訓練中使用這些模型如果使用者是學生,請使用以下任一範圍:
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
擁有擷取作業或問題的權限並不表示 存取教材或素材中繼資料的權限。在實務上 在下列情況中,管理員可能不會看到附加雲端硬碟檔案的標題 非課程成員如要允許管理員存取使用者 檔案,請參閱全網域 委派 指南。
管理學生的答案
StudentSubmission
「資源」是指學生作業的完成和成績,或是
問題。StudentSubmission
每當新問題或系統產生新問題時,系統就會自動為每位學生建立資源
作業建立完成。
以下各節說明管理學生回覆的常見操作。
擷取學生回覆
學生可以擷取自己繳交的作業,老師也可以取得繳交的作業
,網域管理員可擷取
。每位學生繳交的作業
指派 ID;如果您知道識別碼,請使用
courses.courseWork.studentSubmissions.get
以便擷取。
使用 courses.courseWork.studentSubmissions.list
方法取得
符合特定條件的 StudentSubmission
資源,如
範例:
Java
Python
透過下列方式擷取特定學生的 StudentSubmission
資源:
指定 userId
參數,如以下範例所示:
Java
Python
學生會以使用者的專屬 ID 或電子郵件地址做為辨識依據,
Google Admin SDK 傳回的字串。目前的使用者可能稱為自己的
使用 "me"
簡寫為 ID。
此外,系統也可能傳送以下課程的所有作業:
稍後您會在 BigQueryML
AutoML 和自訂訓練中使用這些模型方法是使用常值 "-"
做為 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()
所需範圍取決於提出要求的使用者所具備的角色 稍後您會在 BigQueryML AutoML 和自訂訓練中使用這些模型如果使用者是老師或網域,請使用下列範圍 管理員:
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
有權擷取學生繳交的作業並不暗示 存取附件或附件中繼資料的權限。實務上 這表示在遇到以下情況時,管理員可能不會看到 他們並非課程成員如要授予管理員存取權 使用者檔案,請參閱 全網域委派指南。
在學生回覆中新增附件
您可以在學生繳交的作業中附加 Link
,
DriveFile
或 YouTubeVideo
資源。方法是使用
courses.courseWork.studentSubmissions.modifyAttachments
,如
範例:
Java
Python
連結附件是由目標網址定義;Classroom 會自動套用 擷取標題和縮圖圖片。如要瞭解其他資料,請前往 各自的參考頁面
「StudentSubmission
」只能由課程老師或
擁有者。您只能在以下情況下附加 Materials
:
學生繳交的作業中有 CourseWorkType
為 ASSIGNMENT
。
所需範圍取決於提出要求的使用者所具備的角色 稍後您會在 BigQueryML AutoML 和自訂訓練中使用這些模型如果使用者是老師,請使用下列範圍:
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 UI 時才能指派成績 尚未儲存暫定成績即可將該成績發還給學生 學生。應用程式需要模擬這個行為。應用程式可以 為學生的作業評分的方法有兩種:
僅指派
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'))}")