คู่มือนี้อธิบายวิธีใช้ปลายทางระยะเวลาการให้คะแนนใน Google Classroom API
ภาพรวม
ระยะเวลาการให้คะแนนสร้างขึ้นเพื่อจัดระเบียบการบ้าน แบบทดสอบ และโปรเจ็กต์ ให้อยู่ในช่วงวันที่ที่เฉพาะเจาะจง Classroom API ช่วยให้นักพัฒนาแอปสร้าง แก้ไข และอ่านระยะเวลาการให้คะแนนใน Classroom ในนามของผู้ดูแลระบบและครูได้ นอกจากนี้ คุณยังใช้ Classroom API เพื่อกำหนดระยะเวลาการให้คะแนนในงานของชั้นเรียนได้ด้วย
Classroom API มีปลายทาง 2 รายการสำหรับอ่านและเขียนข้อมูลระยะเวลาการให้คะแนนในหลักสูตร ได้แก่
GetGradingPeriodSettings: ช่วยให้อ่านการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตรได้UpdateGradingPeriodSettings: ช่วยให้คุณจัดการการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตรได้โดยการเพิ่ม แก้ไข และลบระยะเวลาการให้คะแนน รวมถึงใช้ระยะเวลาการให้คะแนนที่กำหนดค่าไว้กับงานของชั้นเรียนที่มีอยู่ทั้งหมด
ข้อกำหนดด้านใบอนุญาตและการมีสิทธิ์
แก้ไขการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตร
หากต้องการสร้าง แก้ไข หรือลบระยะเวลาการให้คะแนนในหลักสูตรโดยใช้ปลายทาง UpdateGradingPeriodSettings คุณต้องมีคุณสมบัติตรงตามเงื่อนไขต่อไปนี้
- ผู้ใช้ที่ส่งคำขอต้องเป็นครูในหลักสูตรหรือผู้ดูแลระบบ
- ผู้ใช้ที่ส่งคำขอมีใบอนุญาต Google Workspace for Education Plus ที่มอบหมายให้
- เจ้าของหลักสูตรมีใบอนุญาตGoogle Workspace for Education Plus ที่มอบหมายให้
อ่านการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตร
ผู้ดูแลระบบโดเมนและครูของหลักสูตรสามารถ อ่าน การตั้งค่าระยะเวลาการให้คะแนนได้ ไม่ว่าจะมีใบอนุญาตประเภทใดก็ตามที่มอบหมายให้ ซึ่งหมายความว่าระบบอนุญาตให้ส่งคำขอไปยังปลายทาง GetGradingPeriodSettings ในนามของผู้ดูแลระบบโดเมนหรือครูทุกคน
กำหนดรหัสระยะเวลาการให้คะแนนในงานของชั้นเรียน
ครูของหลักสูตรสามารถใส่ gradingPeriodId เมื่อสร้างหรืออัปเดตงานของชั้นเรียนโดยใช้ API ได้ ไม่ว่าจะมีใบอนุญาตประเภทใดก็ตามที่มอบหมายให้
ตรวจสอบสิทธิ์ของผู้ใช้ในการตั้งค่าระยะเวลาการให้คะแนน
ระบบอนุญาตให้ส่งคำขอไปยังปลายทาง userProfiles.checkUserCapability ในนามของผู้ดูแลระบบหรือครูทุกคน ใช้ปลายทางนี้เพื่อตรวจสอบว่าผู้ใช้สามารถแก้ไขระยะเวลาการให้คะแนนได้หรือไม่
ข้อกำหนดเบื้องต้น
คู่มือนี้มีตัวอย่างโค้ดใน Python และถือว่าคุณมีสิ่งต่อไปนี้
- โปรเจ็กต์ Google Cloud คุณสามารถตั้งค่าโปรเจ็กต์ได้โดยทำตามวิธีการใน คู่มือเริ่มต้นใช้งานฉบับย่อของ Python
- เพิ่มขอบเขตต่อไปนี้ลงในหน้าจอขอความยินยอม OAuth ของโปรเจ็กต์
https://www.googleapis.com/auth/classroom.courseshttps://www.googleapis.com/auth/classroom.coursework.students
- รหัสของหลักสูตรที่ควรแก้ไขระยะเวลาการให้คะแนน เจ้าของหลักสูตร ต้องมีใบอนุญาต Google Workspace for Education Plus
- สิทธิ์เข้าถึงข้อมูลเข้าสู่ระบบของครูหรือผู้ดูแลระบบที่มีใบอนุญาต Google Workspace for Education Plus คุณจะต้องใช้ข้อมูลเข้าสู่ระบบของครูเพื่อสร้างหรือแก้ไขงานของชั้นเรียน ผู้ดูแลระบบจะสร้างหรือแก้ไขงานของชั้นเรียนไม่ได้หากไม่ได้เป็นครูในหลักสูตร
จัดการทรัพยากร GradingPeriodSettings
ทรัพยากร GradingPeriodSettings ประกอบด้วยรายการ GradingPeriods แต่ละรายการและฟิลด์บูลีนที่ชื่อ applyToExistingCoursework
ตรวจสอบว่า GradingPeriods แต่ละรายการในรายการเป็นไปตามข้อกำหนดต่อไปนี้
- ชื่อ วันที่เริ่มต้น และวันที่สิ้นสุด: ระยะเวลาการให้คะแนนแต่ละรายการต้องมีชื่อ วันที่เริ่มต้น และวันที่สิ้นสุด
- ชื่อที่ไม่ซ้ำกัน: ระยะเวลาการให้คะแนนแต่ละรายการต้องมีชื่อที่ไม่ซ้ำกันและไม่ตรงกับระยะเวลาการให้คะแนนอื่นๆ ในหลักสูตร
- วันที่ไม่ทับซ้อนกัน: ระยะเวลาการให้คะแนนแต่ละรายการต้องไม่มีวันที่เริ่มต้นหรือวันที่สิ้นสุดที่ทับซ้อนกับระยะเวลาการให้คะแนนอื่นๆ ในหลักสูตร
- ลำดับตามเวลา: ระยะเวลาการให้คะแนนต้องแสดงตามลำดับเวลาโดยอิงตามวันที่เริ่มต้นและวันที่สิ้นสุด
ระบบจะกำหนดตัวระบุที่ Classroom API กำหนดให้แก่ระยะเวลาการให้คะแนนแต่ละรายการเมื่อสร้าง
บูลีน applyToExistingCoursework เป็นการตั้งค่าที่คงอยู่ซึ่งช่วยให้คุณจัดระเบียบงานของชั้นเรียนที่สร้างไว้ก่อนหน้านี้ให้อยู่ในระยะเวลาการให้คะแนนได้โดยไม่ต้องเรียก API แยกต่างหากเพื่อแก้ไข gradingPeriodId สำหรับงานของชั้นเรียนแต่ละรายการ หากตั้งค่าเป็น True Classroom จะตั้งค่า gradingPeriodId ในงานของชั้นเรียนที่มีอยู่ทั้งหมดโดยอัตโนมัติหาก courseWork.dueDate อยู่ระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนนที่มีอยู่ หากไม่ได้กำหนดวันที่ครบกำหนดสำหรับงานของชั้นเรียน Classroom จะใช้ courseWork.scheduledTime หากไม่มีฟิลด์ใดฟิลด์หนึ่งหรือไม่มีการจับคู่ภายในวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนนที่มีอยู่ ระบบจะไม่เชื่อมโยงงานของชั้นเรียนกับระยะเวลาการให้คะแนนใดๆ
ตรวจสอบว่าผู้ใช้สามารถแก้ไขการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตรได้หรือไม่
Classroom API มีปลายทาง userProfiles.checkUserCapability เพื่อช่วยให้คุณตรวจสอบล่วงหน้าว่าผู้ใช้สามารถส่งคำขอไปยังปลายทาง UpdateGradingPeriodSettings ได้หรือไม่
Python
def check_grading_periods_update_capability(classroom_service, course_id):
"""Checks whether a user is able to create and modify grading periods in a course."""
try:
capability = classroom_service.userProfiles().checkUserCapability(
userId="me",
capability="UPDATE_GRADING_PERIOD_SETTINGS",
# Required while the checkUserCapability method is available in the Developer Preview Program.
previewVersion="V1_20240930_PREVIEW"
).execute()
# Retrieve the `allowed` boolean from the response.
if capability.get("allowed"):
print("User is allowed to update grading period settings in the course.")
else:
print("User is not allowed to update grading period settings in the course.")
except HttpError as error:
# Handle errors as appropriate for your application.
print(f"An error occurred: {error}")
return error
เพิ่มระยะเวลาการให้คะแนน
เมื่อแน่ใจแล้วว่าผู้ใช้มีสิทธิ์แก้ไขการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตร คุณก็เริ่มส่งคำขอไปยังปลายทาง UpdateGradingPeriodSettings ได้ การแก้ไขทรัพยากร
GradingPeriodSettings จะดำเนินการโดยใช้ปลายทาง
UpdateGradingPeriodSettings ไม่ว่าคุณจะเพิ่มระยะเวลาการให้คะแนนแต่ละรายการ แก้ไขระยะเวลาการให้คะแนนที่มีอยู่ หรือลบระยะเวลาการให้คะแนน
Python
ในตัวอย่างต่อไปนี้ ทรัพยากร gradingPeriodSettings จะได้รับการแก้ไขให้มีระยะเวลาการให้คะแนน 2 รายการ บูลีน applyToExistingCoursework จะตั้งค่าเป็น True ซึ่งจะแก้ไข gradingPeriodId ในงานของชั้นเรียนที่มีอยู่ซึ่งอยู่ระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนน โปรดทราบว่า updateMask มีทั้ง 2 ฟิลด์ บันทึกรหัสสำหรับระยะเวลาการให้คะแนนแต่ละรายการเมื่อระบบส่งคืนรหัสในคำตอบ คุณจะต้องใช้รหัสเหล่านี้เพื่ออัปเดตระยะเวลาการให้คะแนนหากจำเป็น
def create_grading_periods(classroom_service, course_id):
"""
Create grading periods in a course and apply the grading periods
to existing courseWork.
"""
try:
body = {
"gradingPeriods": [
{
"title": "First Semester",
"start_date": {
"day": 1,
"month": 9,
"year": 2023
},
"end_date": {
"day": 15,
"month": 12,
"year": 2023
}
},
{
"title": "Second Semester",
"start_date": {
"day": 15,
"month": 1,
"year": 2024
},
"end_date": {
"day": 31,
"month": 5,
"year": 2024
}
}
],
"applyToExistingCoursework": True
}
gradingPeriodSettingsResponse = classroom_service.courses().updateGradingPeriodSettings(
courseId=course_id,
updateMask='gradingPeriods,applyToExistingCoursework',
body=body
).execute();
print(f"Grading period settings updated.")
return gradingPeriodSettingsResponse
except HttpError as error:
# Handle errors as appropriate for your application.
print(f"An error occurred: {error}")
return error
อ่านการตั้งค่าระยะเวลาการให้คะแนน
GradingPeriodSettings จะถูกอ่านโดยใช้ปลายทาง GetGradingPeriodSettings
ผู้ใช้ทุกคนสามารถอ่านการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตรได้ ไม่ว่าจะมีใบอนุญาตประเภทใดก็ตาม
Python
def get_grading_period_settings(classroom_service, course_id):
"""Read grading periods settings in a course."""
try:
gradingPeriodSettings = classroom_service.courses().getGradingPeriodSettings(
courseId=course_id).execute()
return gradingPeriodSettings
except HttpError as error:
# Handle errors as appropriate for your application.
print(f"An error occurred: {error}")
return error
เพิ่มระยะเวลาการให้คะแนนแต่ละรายการลงในรายการ
การอัปเดตระยะเวลาการให้คะแนนแต่ละรายการต้องทำตามรูปแบบอ่าน-แก้ไข-เขียน ซึ่งหมายความว่าคุณควรทำดังนี้
- อ่านรายการระยะเวลาการให้คะแนนภายในทรัพยากร
GradingPeriodSettingsโดยใช้ปลายทางGetGradingPeriodSettings - ทำการแก้ไขที่เลือกในรายการระยะเวลาการให้คะแนน
- ส่งรายการระยะเวลาการให้คะแนนใหม่ในคำขอไปยัง
UpdateGradingPeriodSettings
รูปแบบนี้จะช่วยให้คุณมั่นใจได้ว่าชื่อระยะเวลาการให้คะแนนแต่ละรายการในหลักสูตรจะไม่ซ้ำกัน และวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนนจะไม่ทับซ้อนกัน
โปรดทราบกฎต่อไปนี้เกี่ยวกับการอัปเดตรายการระยะเวลาการให้คะแนน
- ระบบจะถือว่าระยะเวลาการให้คะแนนที่เพิ่มลงในรายการโดยไม่มีรหัส เป็นการเพิ่ม
- ระบบจะถือว่าระยะเวลาการให้คะแนนที่ไม่มี ในรายการเป็นการลบ
- ระบบจะถือว่าระยะเวลาการให้คะแนนที่มีรหัสอยู่แล้ว แต่ข้อมูลได้รับการแก้ไขเป็นการแก้ไข ส่วนพร็อพเพอร์ตี้ที่ไม่ได้แก้ไขจะยังคงอยู่เหมือนเดิม
- ระบบจะถือว่าระยะเวลาการให้คะแนนที่มีรหัสใหม่หรือรหัสที่ไม่รู้จัก เป็นข้อผิดพลาด
Python
โค้ดต่อไปนี้จะสร้างขึ้นจากตัวอย่างในคู่มือนี้ ระบบจะสร้างระยะเวลาการให้คะแนนใหม่โดยมีชื่อว่า "Summer" บูลีน applyToExistingCoursework จะตั้งค่าเป็น False ในเนื้อความของคำขอ
ในการดำเนินการนี้ ระบบจะอ่าน GradingPeriodSettings ปัจจุบัน เพิ่มระยะเวลาการให้คะแนนใหม่ลงในรายการ และตั้งค่าบูลีน applyToExistingCoursework เป็น False โปรดทราบว่าระบบจะไม่นำระยะเวลาการให้คะแนนที่ใช้กับงานของชั้นเรียนที่มีอยู่แล้วออก ในตัวอย่างก่อนหน้านี้ ระบบได้ใช้ระยะเวลาการให้คะแนน "Semester 1" และ "Semester 2" กับงานของชั้นเรียนที่มีอยู่แล้ว และจะไม่นำระยะเวลาการให้คะแนนดังกล่าวออกจากงานของชั้นเรียนหากตั้งค่า applyToExistingCoursework เป็น "เท็จ" ในคำขอที่ตามมา
def add_grading_period(classroom_service, course_id):
"""
A new grading period is added to the list, but it is not applied to existing courseWork.
"""
try:
# Use the `GetGradingPeriodSettings` endpoint to retrieve the existing
# grading period IDs. You will need to include these IDs in the request
# body to make sure existing grading periods aren't deleted.
body = {
"gradingPeriods": [
{
# Specify the ID to make sure the grading period is not deleted.
"id": "FIRST_SEMESTER_GRADING_PERIOD_ID",
"title": "First Semester",
"start_date": {
"day": 1,
"month": 9,
"year": 2023
},
"end_date": {
"day": 15,
"month": 12,
"year": 2023
}
},
{
# Specify the ID to make sure the grading period is not deleted.
"id": "SECOND_SEMESTER_GRADING_PERIOD_ID",
"title": "Second Semester",
"start_date": {
"day": 15,
"month": 1,
"year": 2024
},
"end_date": {
"day": 31,
"month": 5,
"year": 2024
}
},
{
# Does not include an ID because this grading period is an addition.
"title": "Summer",
"start_date": {
"day": 1,
"month": 6,
"year": 2024
},
"end_date": {
"day": 31,
"month": 8,
"year": 2024
}
}
],
"applyToExistingCoursework": False
}
gradingPeriodSettings = classroom_service.courses().updateGradingPeriodSettings(
courseId=course_id, body=body, updateMask='gradingPeriods,applyToExistingCoursework').execute()
return gradingPeriodSettings
except HttpError as error:
# Handle errors as appropriate for your application.
print(f"An error occurred: {error}")
return error
เคล็ดลับที่เป็นประโยชน์เกี่ยวกับฟิลด์บูลีน applyToExistingCoursework
สิ่งสำคัญที่ต้องจำไว้คือ บูลีน applyToExistingCoursework จะคงอยู่ ซึ่งหมายความว่าหากตั้งค่าบูลีนเป็น True ในการเรียก API ก่อนหน้านี้และไม่ได้เปลี่ยนแปลง การอัปเดตระยะเวลาการให้คะแนนที่ตามมาจะใช้กับงานของชั้นเรียนที่มีอยู่
โปรดทราบว่าหากคุณเปลี่ยนค่าบูลีนนี้จาก True เป็น False ในคำขอ
ที่ส่งไปยัง UpdateGradingPeriodSettings ระบบจะไม่ใช้การเปลี่ยนแปลงใหม่ที่คุณทำกับ
GradingPeriodSettings กับงานของชั้นเรียนที่มีอยู่เท่านั้น ระบบจะไม่นำข้อมูลระยะเวลาการให้คะแนนที่ใช้กับงานของชั้นเรียนในการเรียก API ก่อนหน้านี้ออกเมื่อตั้งค่าบูลีนเป็น True วิธีที่ช่วยให้เข้าใจการตั้งค่าบูลีนนี้ได้ง่ายคือ การตั้งค่านี้รองรับการเชื่อมโยงงานของชั้นเรียนที่มีอยู่กับระยะเวลาการให้คะแนนที่กำหนดค่าไว้ แต่ไม่รองรับการนำการเชื่อมโยงที่มีอยู่ระหว่างงานของชั้นเรียนกับระยะเวลาการให้คะแนนที่กำหนดค่าไว้ออก
หากคุณลบหรือเปลี่ยนชื่อระยะเวลาการให้คะแนน การเปลี่ยนแปลงเหล่านั้นจะเผยแพร่ไปยังงานของชั้นเรียนที่มีอยู่ทั้งหมด ไม่ว่าการตั้งค่าบูลีน applyToExistingCoursework จะเป็นอย่างไรก็ตาม
อัปเดตระยะเวลาการให้คะแนนแต่ละรายการในรายการ
หากต้องการแก้ไขข้อมูลบางอย่างที่เชื่อมโยงกับระยะเวลาการให้คะแนนที่มีอยู่ ให้ใส่รหัสของระยะเวลาการให้คะแนนที่มีอยู่ในรายการพร้อมกับข้อมูลที่แก้ไข
Python
ในตัวอย่างนี้ ระบบจะแก้ไขวันที่สิ้นสุดของระยะเวลาการให้คะแนน "Summer" และตั้งค่าฟิลด์ applyToExistingCoursework เป็น True โปรดทราบว่าการตั้งค่าบูลีนนี้เป็น True จะใช้ระยะเวลาการให้คะแนนที่กำหนดค่าไว้ทั้งหมดกับงานของชั้นเรียนที่มีอยู่ ในคำขอ API ก่อนหน้านี้ ระบบได้ตั้งค่าบูลีนเป็น False เพื่อไม่ให้ใช้ระยะเวลาการให้คะแนน "Summer" กับงานของชั้นเรียนที่มีอยู่ เมื่อตั้งค่าฟิลด์บูลีนนี้เป็น True แล้ว ระบบจะใช้ระยะเวลาการให้คะแนน "Summer" กับงานของชั้นเรียนที่มีอยู่ทั้งหมดที่ตรงกัน
def update_existing_grading_period(classroom_service, course_id):
"""
An existing grading period is updated.
"""
try:
# Use the `GetGradingPeriodSettings` endpoint to retrieve the existing
# grading period IDs. You will need to include these IDs in the request
# body to make sure existing grading periods aren't deleted.
body = {
"gradingPeriods": [
{
"id": "FIRST_SEMESTER_GRADING_PERIOD_ID",
"title": "First Semester",
"start_date": {
"day": 1,
"month": 9,
"year": 2023
},
"end_date": {
"day": 15,
"month": 12,
"year": 2023
}
},
{
"id": "SECOND_SEMESTER_GRADING_PERIOD_ID",
"title": "Second Semester",
"start_date": {
"day": 15,
"month": 1,
"year": 2024
},
"end_date": {
"day": 31,
"month": 5,
"year": 2024
}
},
{
# The end date for this grading period will be modified from August 31, 2024 to September 10, 2024.
# Include the grading period ID in the request along with the new data.
"id": "SUMMER_GRADING_PERIOD_ID",
"title": "Summer",
"start_date": {
"day": 1,
"month": 6,
"year": 2024
},
"end_date": {
"day": 10,
"month": 9,
"year": 2024
}
}
],
"applyToExistingCoursework": True
}
gradingPeriodSettings = classroom_service.courses().updateGradingPeriodSettings(
courseId=course_id, body=body, updateMask='gradingPeriods,applyToExistingCoursework').execute()
return gradingPeriodSettings
except HttpError as error:
# Handle errors as appropriate for your application.
print(f"An error occurred: {error}")
return error
ลบระยะเวลาการให้คะแนนแต่ละรายการ
หากต้องการลบระยะเวลาการให้คะแนน ให้นำระยะเวลาการให้คะแนนออกจากรายการ โปรดทราบว่าหากลบระยะเวลาการให้คะแนน ระบบจะลบการอ้างอิงระยะเวลาการให้คะแนนในงานของชั้นเรียนด้วย ไม่ว่าการตั้งค่า applyToExistingCoursework จะเป็นอย่างไรก็ตาม
Python
หากต้องการดำเนินการต่อจากตัวอย่างในคู่มือนี้ ให้นำระยะเวลาการให้คะแนน "Summer" ออกเพื่อลบระยะเวลาการให้คะแนนดังกล่าว
def delete_grading_period(classroom_service, course_id):
"""
An existing grading period is deleted.
"""
try:
body = {
"gradingPeriods": [
{
"id": "FIRST_SEMESTER_GRADING_PERIOD_ID",
"title": "First Semester",
"start_date": {
"day": 1,
"month": 9,
"year": 2023
},
"end_date": {
"day": 15,
"month": 12,
"year": 2023
}
},
{
"id": "SECOND_SEMESTER_GRADING_PERIOD_ID",
"title": "Second Semester",
"start_date": {
"day": 15,
"month": 1,
"year": 2024
},
"end_date": {
"day": 31,
"month": 5,
"year": 2024
}
}
]
}
gradingPeriodSettings = classroom_service.courses().updateGradingPeriodSettings(
courseId=course_id, body=body, updateMask='gradingPeriods').execute()
return gradingPeriodSettings
except HttpError as error:
# Handle errors as appropriate for your application.
print(f"An error occurred: {error}")
return error
จัดการฟิลด์ gradingPeriodId ในงานของชั้นเรียน
ทรัพยากรงานของชั้นเรียนมีฟิลด์ gradingPeriodId คุณสามารถใช้ปลายทางงานของชั้นเรียนเพื่ออ่านและเขียนระยะเวลาการให้คะแนนที่เชื่อมโยงกับงานของชั้นเรียนได้ โดยมีวิธีจัดการการเชื่อมโยงนี้ 3 วิธี ได้แก่
- การเชื่อมโยงระยะเวลาการให้คะแนนตามวันที่โดยอัตโนมัติ
- ระยะเวลาการให้คะแนนที่เชื่อมโยงที่กำหนดเอง
- ไม่มีการเชื่อมโยงระยะเวลาการให้คะแนน
1. การเชื่อมโยงระยะเวลาการให้คะแนนตามวันที่
เมื่อสร้างงานของชั้นเรียน คุณสามารถอนุญาตให้ Classroom จัดการการเชื่อมโยงระยะเวลาการให้คะแนนให้คุณได้ โดยละเว้นฟิลด์ gradingPeriodId จากคำของานของชั้นเรียน จากนั้นระบุฟิลด์ dueDate หรือ scheduledTime ในคำของานของชั้นเรียน หาก dueDate อยู่ในช่วงวันที่ของระยะเวลาการให้คะแนนที่มีอยู่ Classroom จะตั้งค่ารหัสระยะเวลาการให้คะแนนนั้นในงานของชั้นเรียน หากไม่ได้ระบุฟิลด์ dueDate Classroom จะกำหนด gradingPeriodId ตามฟิลด์ scheduledTime หากไม่ได้ระบุฟิลด์ใดฟิลด์หนึ่ง หรือหากไม่มีการจับคู่ช่วงวันที่ของระยะเวลาการให้คะแนน ระบบจะไม่ตั้งค่า gradingPeriodId ในงานของชั้นเรียน
2. ระยะเวลาการให้คะแนนที่เชื่อมโยงที่กำหนดเอง
หากต้องการเชื่อมโยงงานของชั้นเรียนกับระยะเวลาการให้คะแนนอื่นที่ไม่ตรงกับ dueDate หรือ scheduledTime คุณสามารถตั้งค่าฟิลด์ gradingPeriodId ด้วยตนเองเมื่อสร้างหรืออัปเดตงานของชั้นเรียน หากคุณตั้งค่า gradingPeriodId ด้วยตนเอง Classroom จะไม่ทำการเชื่อมโยงระยะเวลาการให้คะแนนตามวันที่โดยอัตโนมัติ
3. ไม่มีการเชื่อมโยงระยะเวลาการให้คะแนน
หากไม่ต้องการให้เชื่อมโยงงานของชั้นเรียนกับระยะเวลาการให้คะแนนใดๆ เลย ให้ตั้งค่าฟิลด์ gradingPeriodId ในคำของานของชั้นเรียนเป็นสตริงว่าง (gradingPeriodId: "")
หากคุณใช้ภาษาโปรแกรม Go และต้องการตั้งค่าให้ไม่มีระยะเวลาการให้คะแนน คุณควรใส่ฟิลด์ ForceSendFields ในเนื้อความของคำขอด้วย ไลบรารีของไคลเอ็นต์ Go จะละเว้นค่าเริ่มต้นจากคำขอ API เนื่องจากมีแท็กฟิลด์ omitempty ในทุกฟิลด์
ฟิลด์ ForceSendFields จะข้ามการดำเนินการนี้และส่งสตริงว่างเพื่อระบุว่าคุณไม่ต้องการตั้งค่าระยะเวลาการให้คะแนนสำหรับงานของชั้นเรียนนั้น ดูข้อมูลเพิ่มเติมได้ที่
เอกสารประกอบไลบรารีของไคลเอ็นต์ Google APIs Go
Go
courseWork := &classroom.CourseWork{
Title: "Homework questions",
WorkType: "ASSIGNMENT",
State: "DRAFT",
// ...other CourseWork fields...
GradingPeriodId: "",
ForceSendFields: []string{"GradingPeriodId"},
}
จะเกิดอะไรขึ้นกับรหัสระยะเวลาการให้คะแนนหากมีการอัปเดตวันที่ครบกำหนด
หากคุณกำลังอัปเดตฟิลด์ dueDate ของงานของชั้นเรียนและต้องการเก็บการเชื่อมโยงระยะเวลาการให้คะแนนที่กำหนดเองหรือไม่มีการเชื่อมโยงระยะเวลาการให้คะแนนไว้ คุณควรใส่ dueDate และ gradingPeriodId ใน updateMask และเนื้อความของคำขอ ซึ่งจะบอกให้ Classroom ไม่ต้องลบล้าง gradingPeriodId ด้วยระยะเวลาการให้คะแนนที่ตรงกับ dueDate ใหม่
Python
body = {
"dueDate": {
"month": 6,
"day": 10,
"year": 2024
},
"dueTime": {
"hours": 7
},
"gradingPeriodId": "<INSERT-GRADING-PERIOD-ID-OR-EMPTY-STRING>"
}
courseWork = classroom_service.courses().courseWork().patch(
courseId=course_id, id=coursework_id, body=body,
updateMask='dueDate,dueTime,gradingPeriodId') # include the gradingPeriodId field in the updateMask
.execute()