Classroom 應用程式支援三種串流項目:CourseWork、CourseWorkMaterials 和 Announcements。本指南說明如何管理 CourseWork,但所有串流項目的 API 類似。如要進一步瞭解串流項目類型及其差異,請參閱「API 資源」。
CourseWork 資源代表已指派給特定課程學生的作業,包括任何額外教材和詳細資料,例如截止日期或最高分數。CourseWork 有四種子類型:作業、測驗作業、簡答題和選擇題。Classroom API 支援其中三種子類型:作業、簡答題和選擇題。這些型別是由 CourseWork.workType 欄位表示。
除了 CourseWork 資源,您也可以使用 StudentSubmission 資源管理已完成的工作。
建立 CourseWork
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.readonlyhttps://www.googleapis.com/auth/classroom.coursework.me
如果使用者是老師或網域管理員,請使用下列其中一個範圍:
https://www.googleapis.com/auth/classroom.coursework.students.readonlyhttps://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
系統會根據Student 資源中顯示的專屬 ID 或電子郵件地址識別學生。目前使用者也可以使用 "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.readonlyhttps://www.googleapis.com/auth/classroom.coursework.students
如果使用者是學生,請使用下列範圍:
https://www.googleapis.com/auth/classroom.coursework.me.readonlyhttps://www.googleapis.com/auth/classroom.coursework.me
有權擷取 StudentSubmission 不代表有權存取附件或附件中繼資料。也就是說,如果管理員不是課程成員,可能就無法看到附加的雲端硬碟檔案標題。
在學生的回覆中新增附件
您可以附加 Link、DriveFile 或 YouTubeVideo 資源,將連結附加至學生繳交的作業。請使用 courses.courseWork.studentSubmissions.modifyAttachments,如下列範例所示:
Java
Python
附件是由目標 url 定義;Classroom 會自動擷取 title 和縮圖 (thumbnailUrl)。如要瞭解可附加至 StudentSubmissions 的教材,請參閱Material。Link
只有課程老師或擁有者學生可以修改 StudentSubmission。只有在 StudentSubmission 的 CourseWorkType 為 ASSIGNMENT 時,才能附加 Materials。
所需範圍取決於提出要求的使用者在課程中擁有的角色。如果使用者是老師,請使用下列範圍:
https://www.googleapis.com/auth/classroom.coursework.students
如果使用者是學生,請使用下列範圍:
https://www.googleapis.com/auth/classroom.coursework.me