จัดการระยะเวลาการให้คะแนนโดยใช้ 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 ในนามของผู้ดูแลระบบหรือครูของโดเมน

ตั้งค่ารหัสระยะเวลาการให้คะแนนใน CourseWork

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

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

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

บูลีน 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 จะไม่มีผลกับงานในชั้นเรียนที่มีอยู่ ระบบจะไม่นำข้อมูลช่วงการให้คะแนน ที่ใช้กับงานในชั้นเรียนในการเรียก 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

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

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

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

เมื่อสร้างงานใน CourseWork คุณสามารถอนุญาตให้ Classroom จัดการ การเชื่อมโยงช่วงการให้คะแนนให้คุณได้ โดยให้ละเว้นฟิลด์ gradingPeriodId จากคำขอ CourseWork จากนั้นระบุฟิลด์ 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 CourseWork และต้องการเก็บการเชื่อมโยงระยะเวลาการให้คะแนนที่กำหนดเองหรือไม่มีการเชื่อมโยงระยะเวลาการให้คะแนน คุณควรใส่ 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()