Classroom 應用程式支援三種串流項目:CourseWork
、CourseWorkMaterials
和 Announcements
。本指南說明如何管理 CourseWork
,但所有串流項目的 API 都類似。如要進一步瞭解串流項目類型及其差異,請參閱 API 資源。
CourseWork
資源代表已指派給特定課程學生的工作項目,包括任何額外素材和詳細資料,例如截止日期或最高分數。CourseWork
有四個子類型:作業、測驗作業、簡答題和選擇題。Classroom API 支援三種子類型:作業、簡答題和選擇題。這些類型由 CourseWork.workType
欄位代表。
除了 CourseWork
資源外,您也可以使用 StudentSubmission
資源管理已完成的工作。
建立課堂作業
CourseWork
只能由課程老師代表建立。如果嘗試代表學生或非課程老師的網域管理員建立 CourseWork
,系統會顯示 PERMISSION_DENIED
錯誤。請參閱「使用者類型」,進一步瞭解 Classroom 中的不同角色。
使用 courses.courseWork.create
方法建立 CourseWork
時,您可以將連結附加為 materials
,如以下程式碼範例所示:
Java
Python
title
和 workType
為必要欄位,所有其他欄位均為選填欄位。如果未指定 state
,系統會以草稿狀態建立 CourseWork
。
使用具有指定目標 url
的連結資源,即可在 CourseWork
中納入連結的素材資源。Classroom 會自動擷取 title
和縮圖圖片網址 (thumbnailUrl
)。Classroom API 也原生支援 Google 雲端硬碟和 YouTube 教材,可透過類似方式加入 DriveFile 資源或 YouTubeVideo 資源。
如要指定截止日期,請將 dueDate
和 dueTime
欄位設為對應的世界標準時間。截止日必須是未來的日期。
CourseWork
回應包含伺服器指派的 ID,可用於在其他 API 要求中參照指派。
擷取 CourseWork
您可以代表對應課程的學生和老師擷取 CourseWork
。您也可以代表網域管理員擷取 CourseWork
,即使他們不是課程老師也沒關係。如要擷取特定 CourseWork
,請使用 courses.courseWork.get
。如要擷取所有 CourseWork
(可選配符合某些條件),請使用 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
即使您有權存取 CourseWork
,也不代表您有權存取素材資源或素材資源中繼資料。實際上,如果管理員不是課程成員,可能就看不到附加的雲端硬碟檔案標題。
管理學生回應
StudentSubmission
資源代表學生為 CourseWork
完成的作業。資源包含與工作相關的中繼資料,例如工作狀態和成績。建立新 CourseWork
時,系統會為每位學生隱含建立 StudentSubmission
。
以下各節將說明管理學生回應的常見動作。
擷取學生回覆
學生可以擷取自己的提交內容、老師可以擷取課程內所有學生的提交內容,而網域管理員則可以擷取網域內所有學生的提交內容。每個 StudentSubmission
都會指派一個 ID。如果您知道 ID,請使用 courses.courseWork.studentSubmissions.get
擷取提交內容。
使用 courses.courseWork.studentSubmissions.list
方法,取得符合某些條件的所有 StudentSubmission
資源,如以下範例所示:
Java
Python
指定 userId
參數,即可擷取屬於特定學生的 StudentSubmission
資源,如以下範例所示:
Java
Python
學生的識別資訊是專屬 ID 或電子郵件地址,如 Student
資源所示。目前使用者也可以使用 "me"
縮寫參照自己的 ID。
您也可以擷取課程中所有作業的學生繳交內容。如要這麼做,請使用 "-"
文字常值做為 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
即使您有權存取 StudentSubmission
,也不代表您有權存取附件或附件中繼資料。實際上,如果管理員不是課程成員,可能就看不到附加的 Google 雲端硬碟檔案名稱。
在學生回覆中加入附件
您可以附加 Link
、DriveFile
或 YouTubeVideo
資源,藉此附加學生提交作業的連結。這項操作會使用 courses.courseWork.studentSubmissions.modifyAttachments
,如以下範例所示:
Java
Python
Link
附件是由目標 url
定義;Classroom 會自動擷取 title
和縮圖 (thumbnailUrl
)。請參閱 Material
,瞭解可附加至 StudentSubmissions
的素材。
只有課程老師或課程擁有者可以修改 StudentSubmission
。只有在 StudentSubmission
的 CourseWorkType
為 ASSIGNMENT
時,才能附加 Materials
。
所需的範圍取決於要求使用者在課程中的角色。如果使用者是老師,請使用下列範圍:
https://www.googleapis.com/auth/classroom.coursework.students
如果使用者是學生,請使用下列範圍:
https://www.googleapis.com/auth/classroom.coursework.me