Classroom API का इस्तेमाल करके ग्रेडिंग पीरियड मैनेज करना

इस गाइड में, Google Classroom API में ग्रेडिंग की अवधियों के एंडपॉइंट इस्तेमाल करने का तरीका बताया गया है.

खास जानकारी

ग्रेडिंग पीरियड, होमवर्क, क्विज़, और प्रोजेक्ट को तारीख की किसी खास सीमा के हिसाब से व्यवस्थित करने के लिए बनाए जाते हैं. Classroom API की मदद से डेवलपर, एडमिन और शिक्षकों की ओर से Classroom में ग्रेडिंग पीरियड बना सकते हैं, उनमें बदलाव कर सकते हैं, और उन्हें पढ़ सकते हैं. Classroom API का इस्तेमाल करके, CourseWork पर ग्रेडिंग की अवधि भी सेट की जा सकती है.

Classroom API, किसी कोर्स में ग्रेडिंग की अवधि की जानकारी को पढ़ने और लिखने के लिए दो एंडपॉइंट उपलब्ध कराता है:

  • GetGradingPeriodSettings: इससे आपको किसी कोर्स में ग्रेडिंग पीरियड की सेटिंग पढ़ने की अनुमति मिलती है.
  • UpdateGradingPeriodSettings: इसकी मदद से, किसी कोर्स में ग्रेडिंग पीरियड की सेटिंग मैनेज की जा सकती हैं. जैसे, ग्रेडिंग पीरियड जोड़ना, उनमें बदलाव करना, और उन्हें मिटाना. साथ ही, कॉन्फ़िगर किए गए ग्रेडिंग पीरियड को सभी मौजूदा CourseWork पर लागू करना.

लाइसेंस और ज़रूरी शर्तें

किसी कोर्स में ग्रेडिंग पीरियड की सेटिंग में बदलाव करना

UpdateGradingPeriodSettings एंडपॉइंट का इस्तेमाल करके, किसी कोर्स में ग्रेडिंग की अवधि बनाने, उनमें बदलाव करने या उन्हें मिटाने के लिए, ये शर्तें पूरी होनी चाहिए:

  • अनुरोध करने वाला व्यक्ति, कोर्स का शिक्षक या एडमिन होना चाहिए.
  • अनुरोध करने वाले उपयोगकर्ता को Google Workspace for Education Plus का लाइसेंस असाइन किया गया हो.
  • कोर्स के मालिक को Google Workspace for Education Plus का लाइसेंस असाइन किया गया हो.

किसी कोर्स में ग्रेडिंग पीरियड की सेटिंग देखना

डोमेन एडमिन और किसी कोर्स के शिक्षक, ग्रेडिंग की अवधि की सेटिंग पढ़ सकते हैं. इससे कोई फ़र्क़ नहीं पड़ता कि उन्हें कौनसा लाइसेंस असाइन किया गया है. इसका मतलब है कि किसी भी डोमेन एडमिन या शिक्षक की ओर से, GetGradingPeriodSettings एंडपॉइंट पर अनुरोध किए जा सकते हैं.

CourseWork पर ग्रेडिंग पीरियड का आईडी सेट करना

किसी कोर्स के शिक्षक, एपीआई का इस्तेमाल करके CourseWork बनाते या अपडेट करते समय gradingPeriodId को शामिल कर सकते हैं. इससे कोई फ़र्क़ नहीं पड़ता कि उन्हें कौनसा लाइसेंस असाइन किया गया है.

यह देखना कि कोई उपयोगकर्ता, ग्रेडिंग पीरियड सेट अप करने की ज़रूरी शर्तें पूरी करता है या नहीं

किसी भी एडमिन या शिक्षक की ओर से, 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 का लाइसेंस हो. कोर्सवर्क बनाने या उसमें बदलाव करने के लिए, आपको शिक्षक के क्रेडेंशियल की ज़रूरत होगी. अगर एडमिन किसी कोर्स में शिक्षक की भूमिका में नहीं है, तो वह CourseWork नहीं बना सकता या उसमें बदलाव नहीं कर सकता.

GradingPeriodSettings संसाधन को मैनेज करना

GradingPeriodSettings रिसॉर्स में, अलग-अलग GradingPeriods की सूची और applyToExistingCoursework नाम का बूलियन फ़ील्ड शामिल होता है.

पक्का करें कि सूची में मौजूद हर व्यक्ति GradingPeriods इन ज़रूरी शर्तों को पूरा करता हो:

  • टाइटल, शुरू होने की तारीख, और खत्म होने की तारीख: हर ग्रेडिंग पीरियड का टाइटल, शुरू होने की तारीख, और खत्म होने की तारीख होनी चाहिए.
  • यूनीक टाइटल: हर ग्रेडिंग पीरियड का टाइटल यूनीक होना चाहिए. यह टाइटल, कोर्स के किसी अन्य ग्रेडिंग पीरियड के टाइटल से मेल नहीं खाना चाहिए.
  • तारीखों का ओवरलैप न होना: ग्रेडिंग की हर अवधि के शुरू या खत्म होने की तारीखें, कोर्स में ग्रेडिंग की किसी अन्य अवधि से ओवरलैप नहीं होनी चाहिए.
  • कालानुक्रम: ग्रेडिंग पीरियड को शुरू और खत्म होने की तारीखों के हिसाब से कालानुक्रम में सूचीबद्ध किया जाना चाहिए.

हर ग्रेडिंग पीरियड को, Classroom API की ओर से असाइन किया गया आइडेंटिफ़ायर मिलेगा.

applyToExistingCoursework बूलियन एक ऐसी सेटिंग है जो सेव रहती है. इसकी मदद से, पहले से बनाए गए CourseWork को ग्रेडिंग पीरियड में व्यवस्थित किया जा सकता है. इसके लिए, आपको हर CourseWork के gradingPeriodId में बदलाव करने के लिए, अलग से एपीआई कॉल करने की ज़रूरत नहीं होती. अगर इसे True पर सेट किया जाता है, तो Classroom सभी मौजूदा CourseWork पर gradingPeriodId को अपने-आप सेट कर देगा. ऐसा तब होगा, जब courseWork.dueDate, ग्रेडिंग की मौजूदा अवधि के शुरू और खत्म होने की तारीखों के बीच में आता हो. अगर CourseWork के लिए कोई समयसीमा सेट नहीं की गई है, तो Classroom courseWork.scheduledTime का इस्तेमाल करेगा. अगर दोनों फ़ील्ड मौजूद नहीं हैं या ग्रेडिंग पीरियड के शुरू और खत्म होने की तारीखों के बीच कोई मैच नहीं है, तो CourseWork को किसी भी ग्रेडिंग पीरियड से नहीं जोड़ा जाएगा.

यह कुकी यह तय करती है कि कोई उपयोगकर्ता किसी कोर्स में ग्रेडिंग की अवधि की सेटिंग में बदलाव कर सकता है या नहीं

Classroom API, userProfiles.checkUserCapability एंडपॉइंट उपलब्ध कराता है. इससे आपको यह पता लगाने में मदद मिलती है कि कोई उपयोगकर्ता, UpdateGradingPeriodSettings एंडपॉइंट पर अनुरोध कर सकता है या नहीं.

अगर किसी उपयोगकर्ता के पास UPDATE_GRADING_PERIOD_SETTINGS की सुविधा है, लेकिन वह कोर्स में छात्र है, तो 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 संसाधन में बदलाव किया गया है, ताकि इसमें दो ग्रेडिंग पीरियड शामिल किए जा सकें. applyToExistingCoursework बूलियन को True पर सेट किया गया है. इससे, किसी भी मौजूदा CourseWork में gradingPeriodId में बदलाव होगा. यह CourseWork, ग्रेडिंग पीरियड शुरू और खत्म होने की तारीख के बीच का होना चाहिए. ध्यान दें कि updateMask में दोनों फ़ील्ड शामिल हैं. जवाब में मिलने के बाद, हर ग्रेडिंग पीरियड के लिए आईडी सेव करें. अगर ज़रूरी हो, तो ग्रेडिंग पीरियड अपडेट करने के लिए, आपको इन आईडी का इस्तेमाल करना होगा.

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

सूची में कोई ग्रेडिंग पीरियड जोड़ना

किसी ग्रेडिंग पीरियड में अपडेट करने के लिए, read-modify-write पैटर्न का पालन करना ज़रूरी है. इसका मतलब है कि आपको:

  1. GetGradingPeriodSettings एंडपॉइंट का इस्तेमाल करके, GradingPeriodSettings संसाधन में ग्रेडिंग की अवधियों की सूची पढ़ें.
  2. ग्रेडिंग की अवधियों की सूची में चुने गए बदलाव करें.
  3. UpdateGradingPeriodSettings को अनुरोध भेजकर, नए ग्रेडिंग पीरियड की सूची भेजें.

इस पैटर्न से, यह पक्का करने में मदद मिलेगी कि किसी कोर्स में ग्रेडिंग पीरियड के अलग-अलग टाइटल हों. साथ ही, ग्रेडिंग पीरियड के शुरू और खत्म होने की तारीखों में कोई ओवरलैप न हो.

ग्रेडिंग की अवधियों की सूची को अपडेट करने के बारे में इन नियमों का ध्यान रखें:

  1. आईडी के बिना सूची में जोड़े गए ग्रेडिंग पीरियड को जोड़ा गया माना जाता है.
  2. सूची में नहीं दिख रहे ग्रेडिंग पीरियड को हटाया गया माना जाता है.
  3. ग्रेडिंग की अवधि के मौजूदा आईडी में बदलाव किए गए डेटा को बदलाव माना जाता है. जिन प्रॉपर्टी में बदलाव नहीं किया गया है उन्हें पहले जैसा ही रखा जाता है.
  4. नए या अज्ञात आईडी वाले ग्रेडिंग पीरियड को गड़बड़ियां माना जाता है.

Python

नीचे दिया गया कोड, इस गाइड में दिए गए उदाहरण पर आधारित होगा. "गर्मी" नाम से नया ग्रेडिंग पीरियड बनाया जाता है. अनुरोध के मुख्य भाग में, applyToExistingCoursework बूलियन को False पर सेट किया गया है.

इसके लिए, मौजूदा GradingPeriodSettings को पढ़ा जाता है. इसके बाद, सूची में ग्रेडिंग की नई अवधि जोड़ी जाती है. साथ ही, applyToExistingCoursework बूलियन को False पर सेट किया जाता है. ध्यान दें कि ग्रेडिंग के वे पीरियड नहीं हटाए जाएंगे जिन्हें पहले ही मौजूदा CourseWork पर लागू किया जा चुका है. पिछले उदाहरण में, "पहली छमाही" और "दूसरी छमाही" की ग्रेडिंग की अवधि, पहले से मौजूद CourseWork पर लागू की गई थी. अगर बाद के अनुरोधों में applyToExistingCoursework को False पर सेट किया जाता है, तो इन्हें CourseWork से नहीं हटाया जाएगा.

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 पर सेट किया गया था और उसमें कोई बदलाव नहीं किया गया था, तो ग्रेडिंग की अवधि से जुड़े बाद के अपडेट, मौजूदा CourseWork पर लागू होंगे.

ध्यान दें कि अगर आपने UpdateGradingPeriodSettings को किए गए अनुरोध में, इस बूलियन वैल्यू को True से False में बदल दिया है, तो GradingPeriodSettings में किए गए नए बदलाव, मौजूदा CourseWork पर लागू नहीं होंगे. अगर बूलियन फ़ील्ड को True पर सेट किया गया था, तो एपीआई के पिछले कॉल में CourseWork पर लागू की गई ग्रेडिंग की अवधि की जानकारी नहीं हटाई जाएगी. इस बूलियन सेटिंग के बारे में सोचने का एक आसान तरीका यह है कि यह कॉन्फ़िगर की गई ग्रेडिंग अवधियों के साथ मौजूदा CourseWork को जोड़ने की सुविधा देती है. हालांकि, यह CourseWork और कॉन्फ़िगर की गई ग्रेडिंग अवधियों के बीच मौजूदा कनेक्शन हटाने की सुविधा नहीं देती.

ग्रेडिंग की अवधि का टाइटल मिटाने या बदलने पर, वे बदलाव सभी मौजूदा CourseWork में दिखेंगे. भले ही, applyToExistingCoursework बूलियन की सेटिंग कुछ भी हो.

सूची में मौजूद किसी ग्रेडिंग पीरियड को अपडेट करना

अगर आपको ग्रेडिंग की मौजूदा अवधि से जुड़े किसी डेटा में बदलाव करना है, तो बदलाव किए गए डेटा के साथ सूची में ग्रेडिंग की मौजूदा अवधि का आईडी शामिल करें.

Python

इस उदाहरण में, "Summer" ग्रेडिंग पीरियड के खत्म होने की तारीख में बदलाव किया जाएगा. applyToExistingCoursework फ़ील्ड को True पर सेट कर दिया जाएगा. ध्यान दें कि इस बूलियन को True पर सेट करने से, कॉन्फ़िगर किए गए सभी ग्रेडिंग पीरियड, मौजूदा CourseWork पर लागू हो जाएंगे. एपीआई के पिछले अनुरोध में, बूलियन को False पर सेट किया गया था, ताकि "गर्मी की छुट्टियां" ग्रेडिंग की अवधि को मौजूदा CourseWork पर लागू न किया जाए. इस बूलियन फ़ील्ड को True पर सेट करने के बाद, "गर्मी" के ग्रेडिंग पीरियड को उन सभी मौजूदा CourseWork पर लागू किया जाएगा जो इससे मेल खाते हैं.

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

CourseWork पर gradingPeriodId फ़ील्ड मैनेज करना

CourseWork संसाधन में gradingPeriodId फ़ील्ड शामिल होता है. CourseWork से जुड़े ग्रेडिंग पीरियड को पढ़ने और लिखने के लिए, CourseWork एंडपॉइंट का इस्तेमाल किया जा सकता है. इस लिंक को मैनेज करने के तीन तरीके हैं:

  • तारीख के हिसाब से ग्रेडिंग पीरियड अपने-आप जुड़ना
  • कस्टम ग्रेडिंग पीरियड
  • ग्रेडिंग पीरियड से जुड़ा कोई डेटा नहीं है

1. तारीख के आधार पर ग्रेडिंग पीरियड को असाइनमेंट से जोड़ना

कोर्स वर्क बनाते समय, Classroom को ग्रेडिंग की अवधि के हिसाब से असोसिएशन मैनेज करने की अनुमति दी जा सकती है. इसके लिए, CourseWork के अनुरोध से gradingPeriodId फ़ील्ड हटाएं. इसके बाद, CourseWork के अनुरोध में dueDate या scheduledTime फ़ील्ड तय करें. अगर dueDate, ग्रेडिंग की मौजूदा अवधि की तारीख की सीमा में आता है, तो Classroom, CourseWork पर ग्रेडिंग की उस अवधि का आईडी सेट कर देगा. अगर dueDate फ़ील्ड की वैल्यू नहीं दी गई है, तो Classroom, scheduledTime फ़ील्ड की वैल्यू के आधार पर gradingPeriodId फ़ील्ड की वैल्यू तय करेगा. अगर दोनों फ़ील्ड में से किसी को भी नहीं चुना जाता है या ग्रेडिंग की अवधि की तारीख की सीमा मैच नहीं होती है, तो CourseWork पर कोई gradingPeriodId सेट नहीं किया जाएगा.

2. कस्टम ग्रेडिंग पीरियड

अगर आपको CourseWork को किसी ऐसे ग्रेडिंग पीरियड से जोड़ना है जो dueDate या scheduledTime से मेल नहीं खाता, तो CourseWork बनाते या अपडेट करते समय, gradingPeriodId फ़ील्ड को मैन्युअल तरीके से सेट किया जा सकता है. gradingPeriodId को मैन्युअल तरीके से सेट करने पर, Classroom तारीख के आधार पर ग्रेडिंग पीरियड को अपने-आप असाइनमेंट से नहीं जोड़ेगा.

3. ग्रेडिंग पीरियड से जुड़ा कोई असाइनमेंट नहीं है

अगर आपको CourseWork को किसी भी ग्रेडिंग पीरियड से नहीं जोड़ना है, तो CourseWork के अनुरोध में gradingPeriodId फ़ील्ड को खाली स्ट्रिंग (gradingPeriodId: "") पर सेट करें.

अगर Go प्रोग्रामिंग भाषा का इस्तेमाल किया जा रहा है और आपको ग्रेडिंग की अवधि सेट नहीं करनी है, तो आपको अनुरोध के मुख्य हिस्से में ForceSendFields फ़ील्ड भी शामिल करना चाहिए. Go क्लाइंट लाइब्रेरी में, सभी फ़ील्ड पर omitempty फ़ील्ड टैग मौजूद होने की वजह से, एपीआई अनुरोधों में डिफ़ॉल्ट वैल्यू शामिल नहीं की जाती हैं. ForceSendFields फ़ील्ड इस सेटिंग को बायपास करता है और खाली स्ट्रिंग भेजता है. इससे यह पता चलता है कि आपको उस CourseWork के लिए कोई ग्रेडिंग पीरियड सेट नहीं करना है. ज़्यादा जानकारी के लिए, Google APIs Go क्लाइंट लाइब्रेरी का दस्तावेज़ देखें.

शुरू करें

courseWork := &classroom.CourseWork{
  Title: "Homework questions",
  WorkType: "ASSIGNMENT",
  State: "DRAFT",
  // ...other CourseWork fields...
  GradingPeriodId: "",
  ForceSendFields: []string{"GradingPeriodId"},
}

तारीख अपडेट होने पर, ग्रेडिंग पीरियड आईडी का क्या होता है?

अगर आपको CourseWork dueDate फ़ील्ड को अपडेट करना है और आपको कस्टम या बिना ग्रेडिंग पीरियड के असोसिएशन को बनाए रखना है, तो आपको updateMask और अनुरोध के मुख्य हिस्से में dueDate और gradingPeriodId को शामिल करना होगा. इससे 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()