จัดการระยะเวลาการให้คะแนนโดยใช้ 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 เมื่อสร้างหรืออัปเดต CourseWork โดยใช้ 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 แต่ละรายการในลิสต์เป็นไปตามข้อกำหนดต่อไปนี้

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

ระบบจะกำหนดตัวระบุที่ API ของ Classroom กำหนดให้แก่ระยะเวลาการให้คะแนนแต่ละช่วงเมื่อสร้าง

บูลีน applyToExistingCoursework เป็นการตั้งค่าที่คงอยู่ซึ่งช่วยให้คุณจัดระเบียบงานในชั้นเรียนที่สร้างไว้ก่อนหน้านี้เป็นช่วงการให้คะแนนได้โดยไม่ต้องทำการเรียก API แยกต่างหากเพื่อแก้ไข gradingPeriodId สำหรับงานในชั้นเรียนแต่ละรายการ หากตั้งค่าเป็น True Classroom จะตั้งค่า gradingPeriodId ในงานของชั้นเรียนที่มีอยู่ทั้งหมดโดยอัตโนมัติ หาก courseWork.dueDate อยู่ภายในวันที่เริ่มต้นและวันที่สิ้นสุดของช่วงการให้คะแนนที่มีอยู่ หากไม่ได้ตั้งวันที่ครบกำหนดในการบ้านและรายงาน Classroom จะใช้courseWork.scheduledTime หากไม่มีทั้ง 2 ฟิลด์หรือไม่มีการจับคู่ภายในวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนนที่มีอยู่ ระบบจะไม่เชื่อมโยง CourseWork กับระยะเวลาการให้คะแนนใดๆ

กำหนดว่าผู้ใช้จะแก้ไขการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตรได้หรือไม่

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 จะดำเนินการโดยใช้ปลายทางGradingPeriodSettings ไม่ว่าคุณจะเพิ่มระยะเวลาการให้คะแนนแต่ละช่วง แก้ไขระยะเวลาการให้คะแนนที่มีอยู่ หรือลบระยะเวลาการให้คะแนน

Python

ในตัวอย่างต่อไปนี้ มีการแก้ไขทรัพยากร gradingPeriodSettings เพื่อให้มีช่วงการให้คะแนน 2 ช่วง บูลีน applyToExistingCoursework จะ ตั้งค่าเป็น True ซึ่งจะแก้ไข gradingPeriodId ใน CourseWork ที่มีอยู่ซึ่งอยู่ระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดของระยะเวลาการให้คะแนน โปรดทราบ ว่า 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

โค้ดต่อไปนี้จะสร้างขึ้นจากตัวอย่างในคู่มือนี้ ระบบจะสร้างช่วงการให้คะแนนใหม่โดยมีชื่อว่า "ฤดูร้อน" ตั้งค่า applyToExistingCoursework บูลีนเป็น False ในเนื้อความของคำขอ

โดยระบบจะอ่านGradingPeriodSettingsปัจจุบัน เพิ่มช่วงการให้คะแนนใหม่ลงในรายการ และตั้งค่าบูลีน applyToExistingCoursework เป็น False โปรดทราบว่าระบบจะไม่นำระยะเวลาการให้คะแนนที่ใช้กับงานในชั้นเรียนที่มีอยู่แล้วออก ในตัวอย่างก่อนหน้า ระบบได้ใช้ช่วงการให้คะแนน "ภาคเรียนที่ 1" และ "ภาคเรียนที่ 2" กับ งานในชั้นเรียนที่มีอยู่แล้ว และจะไม่นำออกจากงานในชั้นเรียนหาก applyToExistingCoursework ตั้งค่าเป็น False ในคำขอที่ตามมา

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 จะไม่มีผลกับงานในชั้นเรียนที่มีอยู่ ระบบจะไม่นำข้อมูลระยะเวลาการให้คะแนน ที่ใช้กับ CourseWork ในการเรียก API ก่อนหน้านี้ออกเมื่อตั้งค่าบูลีนเป็น True วิธีที่ช่วยให้เข้าใจการตั้งค่าบูลีนนี้ได้ง่ายขึ้นคือการตั้งค่านี้รองรับการเชื่อมโยงงานในชั้นเรียนที่มีอยู่กับช่วงการให้คะแนนที่กำหนดค่าไว้ แต่ไม่รองรับการนำการเชื่อมโยงที่มีอยู่ระหว่างงานในชั้นเรียนกับช่วงการให้คะแนนที่กำหนดค่าไว้ออก

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

อัปเดตระยะเวลาการให้คะแนนแต่ละรายการในรายการ

หากต้องการแก้ไขข้อมูลบางอย่างที่เชื่อมโยงกับระยะเวลาการให้คะแนนที่มีอยู่ ให้ใส่รหัสของระยะเวลาการให้คะแนนที่มีอยู่ในรายการพร้อมกับข้อมูลที่แก้ไข

Python

ในตัวอย่างนี้ ระบบจะแก้ไขวันที่สิ้นสุดของช่วงการให้คะแนน "ฤดูร้อน" ระบบจะตั้งค่าฟิลด์ applyToExistingCoursework เป็น True โปรดทราบ ว่าการตั้งค่าบูลีนนี้เป็น True จะใช้ระยะเวลาการให้คะแนนที่กำหนดค่าไว้ทั้งหมดกับงานในชั้นเรียนที่มีอยู่ ในคำขอ API ก่อนหน้านี้ มีการตั้งค่าบูลีนเป็น False เพื่อไม่ให้ใช้ระยะเวลาการให้คะแนน "ฤดูร้อน" กับงานในชั้นเรียนที่มีอยู่ ตอนนี้เมื่อตั้งค่าช่องบูลีนนี้เป็น True ระบบจะใช้ระยะเวลาการให้คะแนน "ฤดูร้อน" กับงานในชั้นเรียนที่มีอยู่ทั้งหมดที่ตรงกัน

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

ลบระยะเวลาการให้คะแนนแต่ละรายการ

หากต้องการลบระยะเวลาการให้คะแนน ให้นำระยะเวลาการให้คะแนนออกจากรายการ โปรดทราบว่าหากมีการลบระยะเวลาการให้คะแนน ระบบจะลบการอ้างอิงถึงระยะเวลาการให้คะแนนใน CourseWork ด้วย ไม่ว่าapplyToExistingCoursework จะมีการตั้งค่าอย่างไรก็ตาม

Python

หากต้องการใช้ตัวอย่างในคู่มือนี้ต่อไป ให้ละเว้นระยะเวลาการให้คะแนน "ฤดูร้อน" เพื่อลบออก

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 ในงานในชั้นเรียน

ทรัพยากร CourseWork มีช่อง gradingPeriodId คุณสามารถใช้ปลายทางของ งานในชั้นเรียนเพื่ออ่านและเขียนระยะเวลาการให้คะแนนที่เชื่อมโยงกับ งานในชั้นเรียนได้ คุณจัดการการเชื่อมโยงนี้ได้ 3 วิธีดังนี้

  • การเชื่อมโยงระยะเวลาการให้คะแนนตามวันที่โดยอัตโนมัติ
  • ระยะเวลาการให้คะแนนที่เชื่อมโยงที่กำหนดเอง
  • ไม่มีการเชื่อมโยงระยะเวลาการให้คะแนน

1. การเชื่อมโยงระยะเวลาการให้คะแนนตามวันที่

เมื่อสร้างการบ้านและรายงาน คุณสามารถอนุญาตให้ Classroom จัดการการเชื่อมโยงระยะเวลาการให้คะแนนให้คุณได้ โดยให้ละเว้นฟิลด์ gradingPeriodId ในคำขอการบ้านและรายงาน จากนั้นระบุฟิลด์ dueDate หรือ scheduledTime ในคำขอ CourseWork หากdueDateอยู่ในช่วงวันที่ของระยะเวลาการให้คะแนนที่มีอยู่ Classroom จะตั้งค่ารหัสระยะเวลาการให้คะแนนนั้นใน CourseWork หากไม่ได้ระบุฟิลด์ dueDate Classroom จะกำหนด gradingPeriodId ตามฟิลด์ scheduledTime หากไม่ได้ระบุทั้ง 2 ฟิลด์ หรือหากไม่มีช่วงวันที่ของระยะเวลาการให้คะแนนที่ตรงกัน ระบบจะไม่ตั้งค่า gradingPeriodId ใน CourseWork

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