Classroom API ব্যবহার করে গ্রেডিং সময়কাল পরিচালনা করুন

এই গাইডটি ব্যাখ্যা করে যে কিভাবে Google Classroom API-এ গ্রেডিং পিরিয়ডের শেষ পয়েন্টগুলি ব্যবহার করতে হয়।

ওভারভিউ

গ্রেডিং পিরিয়ডগুলি হোমওয়ার্ক, কুইজ এবং প্রকল্পগুলিকে নির্দিষ্ট তারিখের ব্যাপ্তিতে সংগঠিত করার জন্য তৈরি করা হয়। Classroom API ডেভেলপারদের প্রশাসক এবং শিক্ষকদের তরফে ক্লাসরুমে গ্রেডিং পিরিয়ড তৈরি, পরিবর্তন এবং পড়ার অনুমতি দেয়। আপনি কোর্সওয়ার্কে গ্রেডিং পিরিয়ড সেট করতে Classroom API ব্যবহার করতে পারেন।

ক্লাসরুম API একটি কোর্সে গ্রেডিং পিরিয়ডের তথ্য পড়তে এবং লেখার জন্য দুটি শেষ পয়েন্ট অফার করে:

  • GetGradingPeriodSettings : আপনাকে একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পড়তে দেয়।
  • UpdateGradingPeriodSettings : গ্রেডিং পিরিয়ড যোগ করে, সংশোধন করে এবং মুছে ফেলার মাধ্যমে এবং সমস্ত বিদ্যমান কোর্সওয়ার্কে কনফিগার করা গ্রেডিং পিরিয়ড প্রয়োগ করে আপনাকে একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিচালনা করতে দেয়।

লাইসেন্সিং প্রয়োজনীয়তা

একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিবর্তন করুন

UpdateGradingPeriodSettings এন্ডপয়েন্ট ব্যবহার করে একটি কোর্সে গ্রেডিং পিরিয়ড তৈরি করতে, পরিবর্তন করতে বা মুছতে, নিম্নলিখিত শর্তগুলি অবশ্যই পূরণ করতে হবে:

একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পড়ুন

একটি কোর্সের ডোমেন প্রশাসক এবং শিক্ষকরা কোন লাইসেন্স বরাদ্দ করা হোক না কেন তারা গ্রেডিং পিরিয়ড সেটিংস পড়তে পারেন। এর অর্থ হল GetGradingPeriodSettings এন্ডপয়েন্টে অনুরোধগুলি যেকোন ডোমেন প্রশাসক বা শিক্ষকের পক্ষ থেকে অনুমোদিত৷

CourseWork-এ একটি গ্রেডিং পিরিয়ড আইডি সেট করুন

একটি কোর্সের শিক্ষকরা API ব্যবহার করে CourseWork তৈরি বা আপডেট করার সময় gradingPeriodId অন্তর্ভুক্ত করতে পারেন, তাদের নির্ধারিত লাইসেন্স নির্বিশেষে।

গ্রেডিং পিরিয়ড সেট আপ করার জন্য একজন ব্যবহারকারীর যোগ্যতা পরীক্ষা করুন

যেকোন প্রশাসক বা শিক্ষকের তরফে checkGradingPeriodsSetupEligibility endpoint-এ অনুরোধগুলি অনুমোদিত৷ ব্যবহারকারী একটি কোর্সে গ্রেডিং পিরিয়ড পরিবর্তন করতে পারে কিনা তা নির্ধারণ করতে এটি ব্যবহার করুন।

পূর্বশর্ত

এই গাইডটি পাইথনে কোড উদাহরণ প্রদান করে এবং ধরে নেয় যে আপনার কাছে আছে:

  • একটি Google ক্লাউড প্রকল্প। আপনি পাইথন কুইকস্টার্টে নির্দেশাবলী অনুসরণ করে একটি সেট আপ করতে পারেন।
  • আপনার প্রোজেক্টের 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 বুলিয়ান একটি স্থায়ী সেটিং যা আপনাকে প্রতিটি কোর্সওয়ার্কের জন্য gradingPeriodId সংশোধন করার জন্য আলাদা API কল না করেই পূর্বে তৈরি করা কোর্সওয়ার্ককে গ্রেডিং পিরিয়ডে সংগঠিত করতে দেয়। যদি এটি True তে সেট করা হয়, তাহলে ক্লাসরুম স্বয়ংক্রিয়ভাবে সমস্ত বিদ্যমান কোর্সওয়ার্কে gradingPeriodId সেট করবে যদি courseWork.dueDate একটি বিদ্যমান গ্রেডিং পিরিয়ডের শুরু এবং শেষ তারিখের মধ্যে পড়ে। যদি কোর্সওয়ার্কে কোনো নির্ধারিত তারিখ সেট করা না থাকে, তাহলে ক্লাসরুম courseWork.scheduledTime ব্যবহার করবে। যদি কোনো ক্ষেত্রই উপস্থিত না থাকে বা বিদ্যমান গ্রেডিং পিরিয়ডের শুরু এবং শেষ তারিখের মধ্যে কোনো মিল না থাকে, তাহলে কোর্সওয়ার্ক কোনো গ্রেডিং সময়ের সাথে যুক্ত হবে না।

একজন ব্যবহারকারী একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিবর্তন করতে পারে কিনা তা নির্ধারণ করুন

যেহেতু ক্লাসরুমে গ্রেডিং পিরিয়ড তৈরি এবং সংশোধন করার ক্ষমতা শুধুমাত্র একটি নির্দিষ্ট লাইসেন্সধারী ব্যবহারকারীদের জন্য উপলব্ধ, ক্লাসরুম API checkGradingPeriodsSetupEligibility শেষ পয়েন্ট প্রদান করে যাতে আপনি সক্রিয়ভাবে নির্ধারণ করতে পারেন যে ব্যবহারকারী UpdateGradingPeriodSettings এন্ডপয়েন্টে অনুরোধ করতে সক্ষম কিনা।

পাইথন

def check_grading_period_setup_eligibility(classroom, course_id):
    """Checks whether a user is able to create and modify grading periods in a course."""
    try:
        grading_period_eligibility_response = classroom.courses().checkGradingPeriodsSetupEligibility(
          courseId=course_id, previewVersion="V1_20240401_PREVIEW").execute()

        # Retrieve the isGradingPeriodsSetupEligible boolean from the response.
        # If the boolean is `True`, the user is able to modify grading period settings in the course.
        is_grading_periods_eligible = grading_period_eligibility_response.get("isGradingPeriodsSetupEligible")
        return is_grading_periods_eligible
    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

গ্রেডিং পিরিয়ড যোগ করুন

এখন আপনি নিশ্চিত যে ব্যবহারকারীর কাছে একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিবর্তন করার জন্য প্রয়োজনীয় লাইসেন্স আছে, আপনি UpdateGradingPeriodSettings এন্ডপয়েন্টে অনুরোধ জারি করা শুরু করতে পারেন। GradingPeriodSettings রিসোর্সে যেকোনো পরিবর্তন UpdateGradingPeriodSettings এন্ডপয়েন্ট ব্যবহার করে করা হয় আপনি আলাদা গ্রেডিং পিরিয়ড যোগ করছেন, বিদ্যমান গ্রেডিং পিরিয়ড পরিবর্তন করছেন বা গ্রেডিং পিরিয়ড মুছে ফেলছেন।

পাইথন

নিম্নলিখিত উদাহরণে, দুটি গ্রেডিং পিরিয়ড অন্তর্ভুক্ত করার জন্য gradingPeriodSettings সংস্থানটি সংশোধন করা হয়েছে। applyToExistingCoursework বুলিয়ান True এ সেট করা হয়েছে যা একটি গ্রেডিং পিরিয়ডের শুরু এবং শেষ তারিখের মধ্যে পড়ে এমন যেকোনো বিদ্যমান কোর্সওয়ার্কের gradingPeriodId পরিবর্তন করবে। নোট করুন যে updateMask উভয় ক্ষেত্র অন্তর্ভুক্ত করে। উত্তরে ফিরে আসার পরে পৃথক গ্রেডিং সময়ের জন্য আইডিগুলি সংরক্ষণ করুন। প্রয়োজনে গ্রেডিং পিরিয়ড আপডেট করতে আপনাকে এই আইডিগুলি ব্যবহার করতে হবে।

def create_grading_periods(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id,
          updateMask='gradingPeriods,applyToExistingCoursework',
          body=body,
          previewVersion="V1_20240401_PREVIEW"
        ).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

গ্রেডিং পিরিয়ড সেটিংস পড়ুন

GetGradingPeriodSettings এন্ডপয়েন্ট ব্যবহার করে GradingPeriodSettings পড়া হয়। যেকোন ব্যবহারকারী, লাইসেন্স নির্বিশেষে, একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পড়তে পারেন।

পাইথন

def get_grading_period_settings(classroom, course_id):
    """Read grading periods settings in a course."""
    try:
        gradingPeriodSettings = classroom.courses().getGradingPeriodSettings(
          courseId=course_id, previewVersion="V1_20240401_PREVIEW").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. নতুন বা অজানা আইডি সহ গ্রেডিং সময়কাল ত্রুটি হিসাবে বিবেচিত হয়৷

পাইথন

নিম্নলিখিত কোড এই গাইডের উদাহরণের উপর তৈরি করবে। "গ্রীষ্ম" শিরোনাম দিয়ে একটি নতুন গ্রেডিং পিরিয়ড তৈরি করা হয়েছে। applyToExistingCoursework বুলিয়ান অনুরোধের অংশে False এ সেট করা হয়েছে।

এটি করার জন্য, বর্তমান GradingPeriodSettings পড়া হয়, তালিকায় একটি নতুন গ্রেডিং পিরিয়ড যোগ করা হয়, এবং applyToExistingCoursework বুলিয়ান False এ সেট করা হয়। মনে রাখবেন যে যেকোন গ্রেডিং পিরিয়ড যা ইতিমধ্যে বিদ্যমান CourseWork এ প্রয়োগ করা হয়েছে তা সরানো হবে না। আগের উদাহরণে, "সেমিস্টার 1" এবং "সেমিস্টার 2" গ্রেডিং পিরিয়ড ইতিমধ্যেই বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা হয়েছে এবং পরবর্তী অনুরোধে applyToExistingCoursework যদি False এ সেট করা থাকে তাহলে CourseWork থেকে সরানো হবে না৷

def add_grading_period(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id, body=body, updateMask='gradingPeriods,applyToExistingCoursework',
          previewVersion="V1_20240401_PREVIEW").execute()
        return gradingPeriodSettings

    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

applyToExistingCoursework বুলিয়ান ক্ষেত্র সম্পর্কে সহায়ক পয়েন্টার

এটা মনে রাখা গুরুত্বপূর্ণ যে applyToExistingCoursework বুলিয়ান টিকে থাকে যার অর্থ হল যদি পূর্ববর্তী API কলে বুলিয়ানটি True সেট করা থাকে এবং পরিবর্তন না করা হয়, তাহলে গ্রেডিং পিরিয়ডের পরবর্তী আপডেটগুলি বিদ্যমান CourseWork-এ প্রয়োগ করা হবে।

মনে রাখবেন যে আপনি যদি UpdateGradingPeriodSettings এর অনুরোধে এই বুলিয়ান মানটিকে True থেকে False এ পরিবর্তন করেন, তাহলে শুধুমাত্র GradingPeriodSettings এ আপনি যে নতুন পরিবর্তনগুলি করছেন তা বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা হবে না। বুলিয়ানকে True এ সেট করা হলে পূর্ববর্তী API কলগুলিতে CourseWork-এ প্রয়োগ করা যেকোনো গ্রেডিং সময়ের তথ্য সরানো হবে না। এই বুলিয়ান সেটিং সম্পর্কে চিন্তা করার একটি সহায়ক উপায় হল এটি আপনার কনফিগার করা গ্রেডিং পিরিয়ডের সাথে বিদ্যমান CourseWorkকে সংযুক্ত করা সমর্থন করে, কিন্তু এটি CourseWork এবং কনফিগার করা গ্রেডিং পিরিয়ডের মধ্যে বিদ্যমান অ্যাসোসিয়েশনগুলি সরানো সমর্থন করে না।

আপনি যদি গ্রেডিং পিরিয়ডের শিরোনাম মুছে দেন বা পরিবর্তন করেন, তাহলে applyToExistingCoursework বুলিয়ানের সেটিং নির্বিশেষে সেই পরিবর্তনগুলি সমস্ত বিদ্যমান কোর্সওয়ার্কের মাধ্যমে প্রচারিত হবে।

তালিকায় একটি পৃথক গ্রেডিং সময়কাল আপডেট করুন

বিদ্যমান গ্রেডিং পিরিয়ডের সাথে যুক্ত কিছু ডেটা পরিবর্তন করতে, পরিবর্তিত ডেটার সাথে তালিকায় বিদ্যমান গ্রেডিং সময়ের আইডি অন্তর্ভুক্ত করুন।

পাইথন

এই উদাহরণে, "সামার" গ্রেডিং পিরিয়ডের শেষ তারিখ পরিবর্তন করা হবে। applyToExistingCoursework ক্ষেত্রটি True এ সেট করা হবে। মনে রাখবেন যে এই বুলিয়ানটিকে True এ সেট করলে বিদ্যমান কোর্সওয়ার্কের সমস্ত কনফিগার করা গ্রেডিং সময়কাল প্রযোজ্য হবে। পূর্ববর্তী API অনুরোধে, বুলিয়ানকে False এ সেট করা হয়েছিল যাতে "গ্রীষ্মকালীন" গ্রেডিং সময় বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা না হয়। এখন যেহেতু এই বুলিয়ান ক্ষেত্রটি True এ সেট করা হয়েছে, "গ্রীষ্মকাল" গ্রেডিং পিরিয়ডটি মিলিত সমস্ত বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা হবে৷

def update_existing_grading_period(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id, body=body, updateMask='gradingPeriods,applyToExistingCoursework',
          previewVersion="V1_20240401_PREVIEW").execute()
        return gradingPeriodSettings

    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

একটি পৃথক গ্রেডিং সময়কাল মুছুন

গ্রেডিং পিরিয়ড মুছে ফেলতে, তালিকা থেকে গ্রেডিং পিরিয়ড বাদ দিন। মনে রাখবেন যে গ্রেডিং পিরিয়ড মুছে ফেলা হলে, applyToExistingCoursework সেটিং নির্বিশেষে CourseWork-এ গ্রেডিং পিরিয়ডের কোনো রেফারেন্সও মুছে যাবে।

পাইথন

এই নির্দেশিকায় উদাহরণটি চালিয়ে যেতে, গ্রেডিং সময়কাল বাদ দিন, "গ্রীষ্ম", এটি মুছে ফেলুন।

def delete_grading_period(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id, body=body, updateMask='gradingPeriods',
          previewVersion="V1_20240401_PREVIEW").execute()
        return gradingPeriodSettings

    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

কোর্সওয়ার্কে gradingPeriodId ক্ষেত্র পরিচালনা করুন

কোর্সওয়ার্ক রিসোর্স একটি gradingPeriodId ক্ষেত্র অন্তর্ভুক্ত করে। কোর্সওয়ার্কের সাথে যুক্ত গ্রেডিং পিরিয়ড পড়তে এবং লিখতে আপনি CourseWork এন্ডপয়েন্ট ব্যবহার করতে পারেন। এই সমিতি পরিচালনা করার তিনটি উপায় আছে:

  • স্বয়ংক্রিয় তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন
  • কাস্টম যুক্ত গ্রেডিং সময়কাল
  • কোন গ্রেডিং সময়কাল সমিতি

1. তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন

কোর্সওয়ার্ক তৈরি করার সময়, আপনি ক্লাসরুমকে আপনার জন্য গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন পরিচালনা করার অনুমতি দিতে পারেন। এটি করতে, CourseWork অনুরোধ থেকে gradingPeriodId ক্ষেত্রটি বাদ দিন। তারপর, কোর্সওয়ার্ক অনুরোধে dueDate বা scheduledTime ক্ষেত্রগুলি নির্দিষ্ট করুন৷ যদি dueDate একটি বিদ্যমান গ্রেডিং পিরিয়ডের তারিখ সীমার মধ্যে পড়ে, ক্লাসরুম কোর্সওয়ার্কে সেই গ্রেডিং পিরিয়ড আইডি সেট করবে। dueDate ক্ষেত্র নির্দিষ্ট না থাকলে, ক্লাসরুম scheduledTime ক্ষেত্রের উপর ভিত্তি করে gradingPeriodId নির্ধারণ করবে। যদি কোনো ক্ষেত্র নির্দিষ্ট করা না থাকে, অথবা যদি কোনো গ্রেডিং পিরিয়ডের তারিখ পরিসীমা মিল না থাকে, তাহলে কোর্সওয়ার্কে কোনো gradingPeriodId সেট করা হবে না।

2. কাস্টম যুক্ত গ্রেডিং সময়কাল

আপনি যদি কোর্সওয়ার্ককে dueDate বা scheduledTime সাথে সারিবদ্ধ করে একটি ভিন্ন গ্রেডিং পিরিয়ডের সাথে সংযুক্ত করতে চান, তাহলে কোর্সওয়ার্ক তৈরি বা আপডেট করার সময় আপনি ম্যানুয়ালি gradingPeriodId ক্ষেত্র সেট করতে পারেন। আপনি ম্যানুয়ালি gradingPeriodId সেট করলে, ক্লাসরুম স্বয়ংক্রিয় তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন সম্পাদন করবে না।

3. কোন গ্রেডিং সময়কাল সমিতি

আপনি যদি কোর্সওয়ার্ককে কোনো গ্রেডিং পিরিয়ডের সাথে সম্পৃক্ত করতে না চান, তাহলে কোর্সওয়ার্ক রিকোয়েস্টে gradingPeriodId ফিল্ডটি একটি খালি স্ট্রিং ( gradingPeriodId : "" ) এ সেট করুন।

নির্ধারিত তারিখ আপডেট হলে গ্রেডিং পিরিয়ড আইডির কী হবে?

আপনি যদি CourseWork dueDate ফিল্ড আপডেট করেন এবং আপনি একটি কাস্টম বা নো গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন সংরক্ষণ করতে চান, তাহলে আপনাকে আপডেটমাস্ক এবং রিকোয়েস্ট বডিতে dueDate এবং gradingPeriodId অন্তর্ভুক্ত করতে হবে। এটি ক্লাসরুমকে বলবে gradingPeriodId গ্রেডিং পিরিয়ডের সাথে ওভাররাইড না করতে যা নতুন dueDate সাথে মেলে।

পাইথন

body = {
  "dueDate": {
    "month": 6,
    "day": 10,
    "year": 2024
  },
  "dueTime": {
    "hours": 7
  },
  "gradingPeriodId": "<INSERT-GRADING-PERIOD-ID-OR-EMPTY-STRING>"
}
courseWork = classroom.courses().courseWork().patch(
  courseId=course_id, id=coursework_id, body=body,
  updateMask='dueDate,dueTime,gradingPeriodId', # include the gradingPeriodId field in the updateMask
  previewVersion="V1_20240401_PREVIEW").execute()
,

এই গাইডটি ব্যাখ্যা করে যে কিভাবে Google Classroom API-এ গ্রেডিং পিরিয়ডের শেষ পয়েন্টগুলি ব্যবহার করতে হয়।

ওভারভিউ

গ্রেডিং পিরিয়ডগুলি হোমওয়ার্ক, কুইজ এবং প্রকল্পগুলিকে নির্দিষ্ট তারিখের ব্যাপ্তিতে সংগঠিত করার জন্য তৈরি করা হয়। Classroom API ডেভেলপারদের প্রশাসক এবং শিক্ষকদের তরফে ক্লাসরুমে গ্রেডিং পিরিয়ড তৈরি, পরিবর্তন এবং পড়ার অনুমতি দেয়। আপনি কোর্সওয়ার্কে গ্রেডিং পিরিয়ড সেট করতে Classroom API ব্যবহার করতে পারেন।

ক্লাসরুম API একটি কোর্সে গ্রেডিং পিরিয়ডের তথ্য পড়তে এবং লেখার জন্য দুটি শেষ পয়েন্ট অফার করে:

  • GetGradingPeriodSettings : আপনাকে একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পড়তে দেয়।
  • UpdateGradingPeriodSettings : গ্রেডিং পিরিয়ড যোগ করে, সংশোধন করে এবং মুছে ফেলার মাধ্যমে এবং সমস্ত বিদ্যমান কোর্সওয়ার্কে কনফিগার করা গ্রেডিং পিরিয়ড প্রয়োগ করে আপনাকে একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিচালনা করতে দেয়।

লাইসেন্সিং প্রয়োজনীয়তা

একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিবর্তন করুন

UpdateGradingPeriodSettings এন্ডপয়েন্ট ব্যবহার করে একটি কোর্সে গ্রেডিং পিরিয়ড তৈরি করতে, পরিবর্তন করতে বা মুছতে, নিম্নলিখিত শর্তগুলি অবশ্যই পূরণ করতে হবে:

একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পড়ুন

একটি কোর্সের ডোমেন প্রশাসক এবং শিক্ষকরা কোন লাইসেন্স বরাদ্দ করা হোক না কেন তারা গ্রেডিং পিরিয়ড সেটিংস পড়তে পারেন। এর অর্থ হল GetGradingPeriodSettings এন্ডপয়েন্টে অনুরোধগুলি যেকোন ডোমেন প্রশাসক বা শিক্ষকের পক্ষ থেকে অনুমোদিত৷

CourseWork-এ একটি গ্রেডিং পিরিয়ড আইডি সেট করুন

একটি কোর্সের শিক্ষকরা API ব্যবহার করে CourseWork তৈরি বা আপডেট করার সময় gradingPeriodId অন্তর্ভুক্ত করতে পারেন, তাদের নির্ধারিত লাইসেন্স নির্বিশেষে।

গ্রেডিং পিরিয়ড সেট আপ করার জন্য একজন ব্যবহারকারীর যোগ্যতা পরীক্ষা করুন

যেকোন প্রশাসক বা শিক্ষকের তরফে checkGradingPeriodsSetupEligibility endpoint-এ অনুরোধগুলি অনুমোদিত৷ ব্যবহারকারী একটি কোর্সে গ্রেডিং পিরিয়ড পরিবর্তন করতে পারে কিনা তা নির্ধারণ করতে এটি ব্যবহার করুন।

পূর্বশর্ত

এই গাইডটি পাইথনে কোড উদাহরণ প্রদান করে এবং ধরে নেয় যে আপনার কাছে আছে:

  • একটি Google ক্লাউড প্রকল্প। আপনি পাইথন কুইকস্টার্টে নির্দেশাবলী অনুসরণ করে একটি সেট আপ করতে পারেন।
  • আপনার প্রোজেক্টের 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 বুলিয়ান একটি স্থায়ী সেটিং যা আপনাকে প্রতিটি কোর্সওয়ার্কের জন্য gradingPeriodId সংশোধন করার জন্য আলাদা API কল না করেই পূর্বে তৈরি করা কোর্সওয়ার্ককে গ্রেডিং পিরিয়ডে সংগঠিত করতে দেয়। যদি এটি True তে সেট করা হয়, তাহলে ক্লাসরুম স্বয়ংক্রিয়ভাবে সমস্ত বিদ্যমান কোর্সওয়ার্কে gradingPeriodId সেট করবে যদি courseWork.dueDate একটি বিদ্যমান গ্রেডিং পিরিয়ডের শুরু এবং শেষ তারিখের মধ্যে পড়ে। যদি কোর্সওয়ার্কে কোনো নির্ধারিত তারিখ সেট করা না থাকে, তাহলে ক্লাসরুম courseWork.scheduledTime ব্যবহার করবে। যদি কোনো ক্ষেত্রই উপস্থিত না থাকে বা বিদ্যমান গ্রেডিং পিরিয়ডের শুরু এবং শেষ তারিখের মধ্যে কোনো মিল না থাকে, তাহলে কোর্সওয়ার্ক কোনো গ্রেডিং সময়ের সাথে যুক্ত হবে না।

একজন ব্যবহারকারী একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিবর্তন করতে পারে কিনা তা নির্ধারণ করুন

যেহেতু ক্লাসরুমে গ্রেডিং পিরিয়ড তৈরি এবং সংশোধন করার ক্ষমতা শুধুমাত্র একটি নির্দিষ্ট লাইসেন্সধারী ব্যবহারকারীদের জন্য উপলব্ধ, ক্লাসরুম API checkGradingPeriodsSetupEligibility শেষ পয়েন্ট প্রদান করে যাতে আপনি সক্রিয়ভাবে নির্ধারণ করতে পারেন যে ব্যবহারকারী UpdateGradingPeriodSettings এন্ডপয়েন্টে অনুরোধ করতে সক্ষম কিনা।

পাইথন

def check_grading_period_setup_eligibility(classroom, course_id):
    """Checks whether a user is able to create and modify grading periods in a course."""
    try:
        grading_period_eligibility_response = classroom.courses().checkGradingPeriodsSetupEligibility(
          courseId=course_id, previewVersion="V1_20240401_PREVIEW").execute()

        # Retrieve the isGradingPeriodsSetupEligible boolean from the response.
        # If the boolean is `True`, the user is able to modify grading period settings in the course.
        is_grading_periods_eligible = grading_period_eligibility_response.get("isGradingPeriodsSetupEligible")
        return is_grading_periods_eligible
    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

গ্রেডিং পিরিয়ড যোগ করুন

এখন আপনি নিশ্চিত যে ব্যবহারকারীর কাছে একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পরিবর্তন করার জন্য প্রয়োজনীয় লাইসেন্স আছে, আপনি UpdateGradingPeriodSettings এন্ডপয়েন্টে অনুরোধ জারি করা শুরু করতে পারেন। GradingPeriodSettings রিসোর্সে যেকোনো পরিবর্তন UpdateGradingPeriodSettings এন্ডপয়েন্ট ব্যবহার করে করা হয় আপনি আলাদা গ্রেডিং পিরিয়ড যোগ করছেন, বিদ্যমান গ্রেডিং পিরিয়ড পরিবর্তন করছেন বা গ্রেডিং পিরিয়ড মুছে ফেলছেন।

পাইথন

নিম্নলিখিত উদাহরণে, দুটি গ্রেডিং পিরিয়ড অন্তর্ভুক্ত করার জন্য gradingPeriodSettings সংস্থানটি সংশোধন করা হয়েছে। applyToExistingCoursework বুলিয়ান True এ সেট করা হয়েছে যা একটি গ্রেডিং পিরিয়ডের শুরু এবং শেষ তারিখের মধ্যে পড়ে এমন যেকোনো বিদ্যমান কোর্সওয়ার্কের gradingPeriodId পরিবর্তন করবে। নোট করুন যে updateMask উভয় ক্ষেত্র অন্তর্ভুক্ত করে। উত্তরে ফিরে আসার পরে পৃথক গ্রেডিং সময়ের জন্য আইডিগুলি সংরক্ষণ করুন। প্রয়োজনে গ্রেডিং পিরিয়ড আপডেট করতে আপনাকে এই আইডিগুলি ব্যবহার করতে হবে।

def create_grading_periods(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id,
          updateMask='gradingPeriods,applyToExistingCoursework',
          body=body,
          previewVersion="V1_20240401_PREVIEW"
        ).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

গ্রেডিং পিরিয়ড সেটিংস পড়ুন

GetGradingPeriodSettings এন্ডপয়েন্ট ব্যবহার করে GradingPeriodSettings পড়া হয়। যেকোন ব্যবহারকারী, লাইসেন্স নির্বিশেষে, একটি কোর্সে গ্রেডিং পিরিয়ড সেটিংস পড়তে পারেন।

পাইথন

def get_grading_period_settings(classroom, course_id):
    """Read grading periods settings in a course."""
    try:
        gradingPeriodSettings = classroom.courses().getGradingPeriodSettings(
          courseId=course_id, previewVersion="V1_20240401_PREVIEW").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. নতুন বা অজানা আইডি সহ গ্রেডিং সময়কাল ত্রুটি হিসাবে বিবেচিত হয়৷

পাইথন

নিম্নলিখিত কোড এই গাইডের উদাহরণের উপর তৈরি করবে। "গ্রীষ্ম" শিরোনাম দিয়ে একটি নতুন গ্রেডিং পিরিয়ড তৈরি করা হয়েছে। applyToExistingCoursework বুলিয়ান অনুরোধের অংশে False এ সেট করা হয়েছে।

এটি করার জন্য, বর্তমান GradingPeriodSettings পড়া হয়, তালিকায় একটি নতুন গ্রেডিং পিরিয়ড যোগ করা হয়, এবং applyToExistingCoursework বুলিয়ান False এ সেট করা হয়। মনে রাখবেন যে যেকোন গ্রেডিং পিরিয়ড যা ইতিমধ্যে বিদ্যমান CourseWork এ প্রয়োগ করা হয়েছে তা সরানো হবে না। আগের উদাহরণে, "সেমিস্টার 1" এবং "সেমিস্টার 2" গ্রেডিং পিরিয়ড ইতিমধ্যেই বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা হয়েছে এবং পরবর্তী অনুরোধে applyToExistingCoursework যদি False এ সেট করা থাকে তাহলে CourseWork থেকে সরানো হবে না৷

def add_grading_period(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id, body=body, updateMask='gradingPeriods,applyToExistingCoursework',
          previewVersion="V1_20240401_PREVIEW").execute()
        return gradingPeriodSettings

    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

applyToExistingCoursework বুলিয়ান ক্ষেত্র সম্পর্কে সহায়ক পয়েন্টার

এটা মনে রাখা গুরুত্বপূর্ণ যে applyToExistingCoursework বুলিয়ান টিকে থাকে যার অর্থ হল যদি পূর্ববর্তী API কলে বুলিয়ানটি True সেট করা থাকে এবং পরিবর্তন না করা হয়, তাহলে গ্রেডিং পিরিয়ডের পরবর্তী আপডেটগুলি বিদ্যমান CourseWork-এ প্রয়োগ করা হবে।

মনে রাখবেন যে আপনি যদি UpdateGradingPeriodSettings এর অনুরোধে এই বুলিয়ান মানটিকে True থেকে False এ পরিবর্তন করেন, তাহলে শুধুমাত্র GradingPeriodSettings এ আপনি যে নতুন পরিবর্তনগুলি করছেন তা বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা হবে না। বুলিয়ানকে True এ সেট করা হলে পূর্ববর্তী API কলগুলিতে CourseWork-এ প্রয়োগ করা যেকোনো গ্রেডিং সময়ের তথ্য সরানো হবে না। এই বুলিয়ান সেটিং সম্পর্কে চিন্তা করার একটি সহায়ক উপায় হল এটি আপনার কনফিগার করা গ্রেডিং পিরিয়ডের সাথে বিদ্যমান CourseWorkকে সংযুক্ত করা সমর্থন করে, কিন্তু এটি CourseWork এবং কনফিগার করা গ্রেডিং পিরিয়ডের মধ্যে বিদ্যমান অ্যাসোসিয়েশনগুলি সরানো সমর্থন করে না।

আপনি যদি গ্রেডিং পিরিয়ডের শিরোনাম মুছে দেন বা পরিবর্তন করেন, তাহলে applyToExistingCoursework বুলিয়ানের সেটিং নির্বিশেষে সেই পরিবর্তনগুলি সমস্ত বিদ্যমান কোর্সওয়ার্কের মাধ্যমে প্রচারিত হবে।

তালিকায় একটি পৃথক গ্রেডিং সময়কাল আপডেট করুন

বিদ্যমান গ্রেডিং পিরিয়ডের সাথে যুক্ত কিছু ডেটা পরিবর্তন করতে, পরিবর্তিত ডেটার সাথে তালিকায় বিদ্যমান গ্রেডিং সময়ের আইডি অন্তর্ভুক্ত করুন।

পাইথন

এই উদাহরণে, "সামার" গ্রেডিং পিরিয়ডের শেষ তারিখ পরিবর্তন করা হবে। applyToExistingCoursework ক্ষেত্রটি True এ সেট করা হবে। মনে রাখবেন যে এই বুলিয়ানটিকে True এ সেট করলে বিদ্যমান কোর্সওয়ার্কের সমস্ত কনফিগার করা গ্রেডিং সময়কাল প্রযোজ্য হবে। পূর্ববর্তী API অনুরোধে, বুলিয়ানকে False এ সেট করা হয়েছিল যাতে "গ্রীষ্মকালীন" গ্রেডিং সময় বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা না হয়। এখন যেহেতু এই বুলিয়ান ক্ষেত্রটি True এ সেট করা হয়েছে, "গ্রীষ্মকাল" গ্রেডিং পিরিয়ডটি মিলিত সমস্ত বিদ্যমান কোর্সওয়ার্কে প্রয়োগ করা হবে৷

def update_existing_grading_period(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id, body=body, updateMask='gradingPeriods,applyToExistingCoursework',
          previewVersion="V1_20240401_PREVIEW").execute()
        return gradingPeriodSettings

    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

একটি পৃথক গ্রেডিং সময়কাল মুছুন

গ্রেডিং পিরিয়ড মুছে ফেলতে, তালিকা থেকে গ্রেডিং পিরিয়ড বাদ দিন। মনে রাখবেন যে গ্রেডিং পিরিয়ড মুছে ফেলা হলে, applyToExistingCoursework সেটিং নির্বিশেষে CourseWork-এ গ্রেডিং পিরিয়ডের কোনো রেফারেন্সও মুছে যাবে।

পাইথন

এই নির্দেশিকায় উদাহরণটি চালিয়ে যেতে, গ্রেডিং সময়কাল বাদ দিন, "গ্রীষ্ম", এটি মুছে ফেলুন।

def delete_grading_period(classroom, 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.courses().updateGradingPeriodSettings(
          courseId=course_id, body=body, updateMask='gradingPeriods',
          previewVersion="V1_20240401_PREVIEW").execute()
        return gradingPeriodSettings

    except HttpError as error:
        # Handle errors as appropriate for your application.
        print(f"An error occurred: {error}")
        return error

কোর্সওয়ার্কে gradingPeriodId ক্ষেত্র পরিচালনা করুন

কোর্সওয়ার্ক রিসোর্স একটি gradingPeriodId ক্ষেত্র অন্তর্ভুক্ত করে। কোর্সওয়ার্কের সাথে যুক্ত গ্রেডিং পিরিয়ড পড়তে এবং লিখতে আপনি CourseWork এন্ডপয়েন্ট ব্যবহার করতে পারেন। এই সমিতি পরিচালনা করার তিনটি উপায় আছে:

  • স্বয়ংক্রিয় তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন
  • কাস্টম যুক্ত গ্রেডিং সময়কাল
  • কোন গ্রেডিং সময়কাল সমিতি

1. তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন

কোর্সওয়ার্ক তৈরি করার সময়, আপনি ক্লাসরুমকে আপনার জন্য গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন পরিচালনা করার অনুমতি দিতে পারেন। এটি করতে, CourseWork অনুরোধ থেকে gradingPeriodId ক্ষেত্রটি বাদ দিন। তারপর, কোর্সওয়ার্ক অনুরোধে dueDate বা scheduledTime ক্ষেত্রগুলি নির্দিষ্ট করুন৷ যদি dueDate একটি বিদ্যমান গ্রেডিং পিরিয়ডের তারিখ সীমার মধ্যে পড়ে, ক্লাসরুম কোর্সওয়ার্কে সেই গ্রেডিং পিরিয়ড আইডি সেট করবে। dueDate ক্ষেত্র নির্দিষ্ট না থাকলে, ক্লাসরুম scheduledTime ক্ষেত্রের উপর ভিত্তি করে gradingPeriodId নির্ধারণ করবে। যদি কোনো ক্ষেত্র নির্দিষ্ট করা না থাকে, অথবা যদি কোনো গ্রেডিং পিরিয়ডের তারিখ পরিসীমা মিল না থাকে, তাহলে কোর্সওয়ার্কে কোনো gradingPeriodId সেট করা হবে না।

2. কাস্টম যুক্ত গ্রেডিং সময়কাল

আপনি যদি কোর্সওয়ার্ককে dueDate বা scheduledTime সাথে সারিবদ্ধ করে একটি ভিন্ন গ্রেডিং পিরিয়ডের সাথে সংযুক্ত করতে চান, তাহলে কোর্সওয়ার্ক তৈরি বা আপডেট করার সময় আপনি ম্যানুয়ালি gradingPeriodId ক্ষেত্র সেট করতে পারেন। আপনি ম্যানুয়ালি gradingPeriodId সেট করলে, ক্লাসরুম স্বয়ংক্রিয় তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন সম্পাদন করবে না।

3. কোন গ্রেডিং সময়কাল সমিতি

আপনি যদি কোর্সওয়ার্ককে কোনো গ্রেডিং পিরিয়ডের সাথে সম্পৃক্ত করতে না চান, তাহলে কোর্সওয়ার্ক রিকোয়েস্টে gradingPeriodId ফিল্ডটি একটি খালি স্ট্রিং ( gradingPeriodId : "" ) এ সেট করুন।

নির্ধারিত তারিখ আপডেট হলে গ্রেডিং পিরিয়ড আইডির কী হবে?

আপনি যদি CourseWork dueDate ফিল্ড আপডেট করেন এবং আপনি একটি কাস্টম বা নো গ্রেডিং পিরিয়ড অ্যাসোসিয়েশন সংরক্ষণ করতে চান, তাহলে আপনাকে আপডেটমাস্ক এবং রিকোয়েস্ট বডিতে dueDate এবং gradingPeriodId অন্তর্ভুক্ত করতে হবে। এটি ক্লাসরুমকে বলবে gradingPeriodId গ্রেডিং পিরিয়ডের সাথে ওভাররাইড না করতে যা নতুন dueDate সাথে মেলে।

পাইথন

body = {
  "dueDate": {
    "month": 6,
    "day": 10,
    "year": 2024
  },
  "dueTime": {
    "hours": 7
  },
  "gradingPeriodId": "<INSERT-GRADING-PERIOD-ID-OR-EMPTY-STRING>"
}
courseWork = classroom.courses().courseWork().patch(
  courseId=course_id, id=coursework_id, body=body,
  updateMask='dueDate,dueTime,gradingPeriodId', # include the gradingPeriodId field in the updateMask
  previewVersion="V1_20240401_PREVIEW").execute()