จัดการระยะเวลาการให้คะแนนโดยใช้ Classroom API

คู่มือนี้อธิบายวิธีใช้ปลายทางระยะเวลาการให้คะแนนใน 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.courses
    • https://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

เพิ่มระยะเวลาการให้คะแนนแต่ละรายการลงในรายการ

การอัปเดตระยะเวลาการให้คะแนนแต่ละรายการต้องทำตามรูปแบบอ่าน-แก้ไข-เขียน ซึ่งหมายความว่าคุณควรทำดังนี้

  1. อ่านรายการระยะเวลาการให้คะแนนภายในทรัพยากร GradingPeriodSettings โดยใช้ปลายทาง GetGradingPeriodSettings
  2. ทำการแก้ไขที่เลือกในรายการระยะเวลาการให้คะแนน
  3. ส่งรายการระยะเวลาการให้คะแนนใหม่ในคำขอไปยัง UpdateGradingPeriodSettings

รูปแบบนี้จะช่วยให้คุณมั่นใจได้ว่าชื่อระยะเวลาการให้คะแนนแต่ละรายการในหลักสูตรจะไม่ซ้ำกัน และวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนนจะไม่ทับซ้อนกัน

โปรดทราบกฎต่อไปนี้เกี่ยวกับการอัปเดตรายการระยะเวลาการให้คะแนน

  1. ระบบจะถือว่าระยะเวลาการให้คะแนนที่เพิ่มลงในรายการโดยไม่มีรหัส เป็นการเพิ่ม
  2. ระบบจะถือว่าระยะเวลาการให้คะแนนที่ไม่มี ในรายการเป็นการลบ
  3. ระบบจะถือว่าระยะเวลาการให้คะแนนที่มีรหัสอยู่แล้ว แต่ข้อมูลได้รับการแก้ไขเป็นการแก้ไข ส่วนพร็อพเพอร์ตี้ที่ไม่ได้แก้ไขจะยังคงอยู่เหมือนเดิม
  4. ระบบจะถือว่าระยะเวลาการให้คะแนนที่มีรหัสใหม่หรือรหัสที่ไม่รู้จัก เป็นข้อผิดพลาด

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()