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

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

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

किसी ग्रेडिंग पीरियड में अपडेट, पढ़ने-बदलाव करने-लिखने के पैटर्न के हिसाब से किए जाने चाहिए. इसका मतलब है कि आपको:

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

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

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

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

Python

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

ऐसा करने के लिए, मौजूदा GradingPeriodSettings को पढ़ा जाता है, सूची में एक नया ग्रेडिंग पीरियड जोड़ा जाता है, और applyToExistingCoursework बूलियन को False पर सेट किया जाता है. ध्यान दें कि मौजूदा CourseWork पर पहले से लागू किए गए ग्रेडिंग पीरियड नहीं हटाए जाएंगे. पिछले उदाहरण में, "सेमेस्टर 1" और "सेमेस्टर 2" ग्रेडिंग पीरियड, मौजूदा 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 पर लागू नहीं होंगे. एपीआई के पिछले कॉल में, CourseWork पर लागू किए गए ग्रेडिंग पीरियड की जानकारी नहीं हटाई जाएगी. हालांकि, ऐसा तब होगा, जब बूलियन को True पर सेट किया गया हो. इस बूलियन सेटिंग के बारे में यह कहा जा सकता है कि यह मौजूदा CourseWork को कॉन्फ़िगर किए गए ग्रेडिंग पीरियड से जोड़ने में मदद करती है. हालांकि, यह CourseWork और कॉन्फ़िगर किए गए ग्रेडिंग पीरियड के बीच मौजूद कनेक्शन को हटाने में मदद नहीं करती.

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

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

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

Python

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

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

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

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

1. तारीख के हिसाब से, ग्रेडिंग पीरियड का कनेक्शन होना

CourseWork बनाते समय, 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 क्लाइंट लाइब्रेरी का दस्तावेज़ देखें.

Go

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

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

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

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