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

এই নির্দেশিকায় গুগল ক্লাসরুম এপিআই-তে গ্রেডিং পিরিয়ড এন্ডপয়েন্টগুলো কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে।

সংক্ষিপ্ত বিবরণ

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

ক্লাসরুম এপিআই একটি কোর্সের গ্রেডিং পিরিয়ডের তথ্য পড়া এবং লেখার জন্য দুটি এন্ডপয়েন্ট প্রদান করে:

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

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

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

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

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

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

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

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

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

যেকোনো প্রশাসক বা শিক্ষকের পক্ষ থেকে userProfiles.checkUserCapability এন্ডপয়েন্টে অনুরোধ পাঠানোর অনুমতি রয়েছে। ব্যবহারকারী গ্রেডিং পিরিয়ড পরিবর্তন করতে পারবেন কিনা, তা নির্ধারণ করতে এটি ব্যবহার করুন।

পূর্বশর্ত

এই নির্দেশিকাটিতে পাইথনে কোডের উদাহরণ দেওয়া হয়েছে এবং ধরে নেওয়া হচ্ছে যে আপনার নিম্নলিখিত বিষয়গুলো জানা আছে:

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

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

ক্লাসরুম এপিআই userProfiles.checkUserCapability এন্ডপয়েন্টটি প্রদান করে, যা আপনাকে আগে থেকেই নির্ধারণ করতে সাহায্য করে যে কোনো ব্যবহারকারী UpdateGradingPeriodSettings এন্ডপয়েন্টে অনুরোধ করতে সক্ষম কিনা।

পাইথন

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 রিসোর্সটি পরিবর্তন করা হয়েছে। applyToExistingCoursework বুলিয়ানটি True তে সেট করা হয়েছে, যা একটি গ্রেডিং পিরিয়ডের শুরু এবং শেষের তারিখের মধ্যে থাকা যেকোনো বিদ্যমান CourseWork-এর gradingPeriodId পরিবর্তন করবে। লক্ষ্য করুন যে 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

মূল্যায়ন সময়কালের সেটিংস পড়ুন

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

পাইথন

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. নতুন বা অজানা আইডিযুক্ত গ্রেডিং পিরিয়ডগুলোকে ত্রুটি হিসেবে গণ্য করা হয়।

পাইথন

নিম্নলিখিত কোডটি এই গাইডের উদাহরণের উপর ভিত্তি করে তৈরি করা হয়েছে। "Summer" শিরোনামে একটি নতুন গ্রেডিং পিরিয়ড তৈরি করা হয়েছে। রিকোয়েস্ট বডিতে 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 বুলিয়ানটি স্থায়ী , যার অর্থ হলো, যদি পূর্ববর্তী কোনো API কলে বুলিয়ানটির মান True সেট করা হয়ে থাকে এবং তা পরিবর্তন না করা হয়, তাহলে গ্রেডিং পিরিয়ডের পরবর্তী আপডেটগুলো বিদ্যমান কোর্সওয়ার্কের (CourseWork) উপর প্রয়োগ করা হবে।

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

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

তালিকায় একটি নির্দিষ্ট গ্রেডিং পিরিয়ড আপডেট করুন।

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

পাইথন

এই উদাহরণে, "সামার" গ্রেডিং পিরিয়ডের শেষ তারিখ পরিবর্তন করা হবে। applyToExistingCoursework ফিল্ডটির মান ` True সেট করা হবে। উল্লেখ্য যে, এই বুলিয়ানটির মান ` True সেট করলে বিদ্যমান কোর্সওয়ার্কগুলোতে কনফিগার করা সমস্ত গ্রেডিং পিরিয়ড প্রয়োগ করা হবে। পূর্ববর্তী এপিআই অনুরোধে, বুলিয়ানটির মান ` 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

একটি পৃথক মূল্যায়ন সময়কাল মুছে ফেলুন

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

পাইথন

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

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-এর সাথে যুক্ত গ্রেডিং পিরিয়ড পড়তে এবং লিখতে পারেন। এই সংযোগটি পরিচালনা করার তিনটি উপায় রয়েছে:

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

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

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

২. কাস্টম সংশ্লিষ্ট গ্রেডিং সময়কাল

যদি আপনি কোর্সওয়ার্কটিকে তার dueDate বা scheduledTime এর সাথে সামঞ্জস্যপূর্ণ গ্রেডিং পিরিয়ডের চেয়ে ভিন্ন কোনো গ্রেডিং পিরিয়ডের সাথে যুক্ত করতে চান, তাহলে কোর্সওয়ার্ক তৈরি বা আপডেট করার সময় আপনি ম্যানুয়ালি gradingPeriodId ফিল্ডটি সেট করতে পারেন। যদি আপনি ম্যানুয়ালি ' gradingPeriodId সেট করেন, তাহলে ক্লাসরুম স্বয়ংক্রিয়ভাবে তারিখ-ভিত্তিক গ্রেডিং পিরিয়ড সংযুক্ত করার কাজটি করবে না।

৩. গ্রেডিং পিরিয়ডের সাথে কোনো সম্পর্ক নেই

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

আপনি যদি Go প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করেন এবং কোনো গ্রেডিং পিরিয়ড নির্ধারণ করতে না চান, তাহলে আপনাকে রিকোয়েস্ট বডিতে ForceSendFields ফিল্ডটিও অন্তর্ভুক্ত করতে হবে। Go ক্লায়েন্ট লাইব্রেরির ক্ষেত্রে, সমস্ত ফিল্ডে omitempty ফিল্ড ট্যাগ থাকার কারণে API রিকোয়েস্ট থেকে ডিফল্ট ভ্যালুগুলো বাদ পড়ে যায়। ForceSendFields ফিল্ডটি এই সমস্যাটি এড়িয়ে যায় এবং একটি খালি স্ট্রিং পাঠিয়ে বোঝায় যে আপনি ওই কোর্সওয়ার্কটির জন্য কোনো গ্রেডিং পিরিয়ড নির্ধারণ করতে চান না। আরও তথ্যের জন্য Google APIs Go ক্লায়েন্ট লাইব্রেরির ডকুমেন্টেশন দেখুন।

যান

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

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

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

পাইথন

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