উন্নত Google পরিষেবা

গুগল অ্যাপস স্ক্রিপ্টের অ্যাডভান্সড সার্ভিসগুলো আপনাকে তাদের HTTP ইন্টারফেস ব্যবহারের চেয়ে কম সেটআপের মাধ্যমে নির্দিষ্ট কিছু পাবলিক গুগল এপিআই-এর সাথে সংযোগ স্থাপন করতে দেয়। অ্যাডভান্সড সার্ভিসগুলো হলো ঐসব গুগল এপিআই-এর চারপাশে থাকা পাতলা র‍্যাপার। এগুলো অ্যাপস স্ক্রিপ্টের বিল্ট-ইন সার্ভিসগুলোর মতোই কাজ করে—উদাহরণস্বরূপ, এগুলো অটোকমপ্লিট সুবিধা দেয় এবং অ্যাপস স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে অথরাইজেশন ফ্লো পরিচালনা করে। কোনো স্ক্রিপ্টে অ্যাডভান্সড সার্ভিস ব্যবহার করার আগে তা সক্রিয় করুন।

উন্নত পরিষেবাগুলি সক্ষম করুন

গুগলের কোনো উন্নত পরিষেবা ব্যবহার করতে, এই নির্দেশাবলী অনুসরণ করুন:

ধাপ ১: উন্নত পরিষেবাটি সক্রিয় করুন

অ্যাপস স্ক্রিপ্ট এডিটর ব্যবহার করে অথবা ম্যানিফেস্ট সম্পাদনা করে একটি অ্যাডভান্সড সার্ভিস সক্রিয় করুন।

পদ্ধতি A: এডিটর ব্যবহার করে

  1. অ্যাপস স্ক্রিপ্ট প্রজেক্টটি খুলুন।
  2. বাম দিকে, ‘এডিটর ক্লিক করুন।
  3. বাম দিকে, Services-এর পাশে, Add a service-এ করুন।
  4. একটি উন্নত গুগল পরিষেবা নির্বাচন করুন এবং 'যোগ করুন'-এ ক্লিক করুন।

পদ্ধতি বি: ম্যানিফেস্ট ব্যবহার করে

ম্যানিফেস্ট ফাইলটি সম্পাদনা করে উন্নত পরিষেবাগুলি সক্রিয় করুন। উদাহরণস্বরূপ, গুগল ড্রাইভ উন্নত পরিষেবাটি সক্রিয় করতে, dependencies অবজেক্টে enabledAdvancedServices ফিল্ডটি যোগ করুন:

{
  "timeZone": "America/Denver",
  "dependencies": {
    "enabledAdvancedServices": [
      {
        "userSymbol": "Drive",
        "version": "v3",
        "serviceId": "drive"
      }
    ]
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

আপনি কোনো উন্নত পরিষেবা চালু করার পর, সেটি অটোকমপ্লিটে উপলব্ধ হয়।

ধাপ ২: গুগল ক্লাউড এপিআই সক্রিয় করুন (শুধুমাত্র স্ট্যান্ডার্ড গুগল ক্লাউড প্রজেক্টের জন্য)

যদি অ্যাপস স্ক্রিপ্ট দ্বারা স্বয়ংক্রিয়ভাবে তৈরি একটি ডিফল্ট গুগল ক্লাউড প্রজেক্ট ব্যবহার করেন, তাহলে এই ধাপটি এড়িয়ে যান। ধাপ ১-এ পরিষেবাটি যুক্ত করার সময় এপিআইটি স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যায়।

যদি একটি স্ট্যান্ডার্ড গুগল ক্লাউড প্রজেক্ট ব্যবহার করেন, তাহলে অ্যাডভান্সড সার্ভিসের সাথে সম্পর্কিত API-টি ম্যানুয়ালি সক্রিয় করুন। API-টি ম্যানুয়ালি সক্রিয় করতে:

  1. আপনার স্ক্রিপ্টের সাথে যুক্ত ক্লাউড প্রজেক্টটি **গুগল ক্লাউড কনসোলে** খুলুন।

  2. কনসোলের উপরের দিকে, সার্চ বারে ক্লিক করে API-এর নামের অংশবিশেষ টাইপ করুন (উদাহরণস্বরূপ, "Calendar"), তারপর নামটি দেখতে পেলে সেটিতে ক্লিক করুন।

  3. এপিআই সক্ষম করুন -এ ক্লিক করুন।

  4. গুগল ক্লাউড কনসোলটি বন্ধ করুন এবং স্ক্রিপ্ট এডিটরে ফিরে যান।

মেথড সিগনেচার কীভাবে নির্ধারণ করা হয়

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

গুগল এপিআই-তে পাঠানো অনুরোধ বিভিন্ন ধরনের ডেটা গ্রহণ করতে পারে, যার মধ্যে রয়েছে পাথ প্যারামিটার, কোয়েরি প্যারামিটার, একটি রিকোয়েস্ট বডি বা মিডিয়া আপলোড অ্যাটাচমেন্ট। কিছু অ্যাডভান্সড সার্ভিস নির্দিষ্ট HTTP রিকোয়েস্ট হেডারও গ্রহণ করতে পারে (উদাহরণস্বরূপ, ক্যালেন্ডার অ্যাডভান্সড সার্ভিস )।

অ্যাপস স্ক্রিপ্টে সংশ্লিষ্ট মেথড সিগনেচারে নিম্নলিখিত আর্গুমেন্টগুলো রয়েছে:

  1. অনুরোধের মূল অংশ (সাধারণত একটি রিসোর্স), যা একটি জাভাস্ক্রিপ্ট অবজেক্ট।
  2. পাথ বা প্রয়োজনীয় প্যারামিটারগুলো স্বতন্ত্র আর্গুমেন্ট হিসেবে থাকে। যদি মেথডটির একাধিক পাথ প্যারামিটারের প্রয়োজন হয়, তবে সেগুলো এপিআই এন্ডপয়েন্ট ইউআরএল-এ তালিকাভুক্ত ক্রমানুসারে প্রদর্শিত হয়।
  3. মিডিয়া আপলোড অ্যাটাচমেন্টটি একটি Blob আর্গুমেন্ট হিসেবে থাকে।
  4. ঐচ্ছিক প্যারামিটার (সাধারণত কোয়েরি প্যারামিটার), যা প্যারামিটারের নাম ও মানের মধ্যে সংযোগ স্থাপনকারী একটি জাভাস্ক্রিপ্ট অবজেক্ট।
  5. HTTP অনুরোধের হেডার, যা হেডারের নাম এবং মানের মধ্যে সংযোগ স্থাপনকারী একটি জাভাস্ক্রিপ্ট অবজেক্ট।

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

এই ব্যতিক্রমগুলো সম্পর্কে সচেতন থাকুন:

  • যেসব মেথড মিডিয়া আপলোড গ্রহণ করে, সেগুলোর ক্ষেত্রে uploadType প্যারামিটারটি স্বয়ংক্রিয়ভাবে সেট হয়ে যায়।
  • গুগল এপিআই-তে delete নামের মেথডগুলোকে অ্যাপস স্ক্রিপ্টে ' remove বলা হয়, কারণ delete জাভাস্ক্রিপ্টে একটি সংরক্ষিত শব্দ।
  • যদি কোনো অ্যাডভান্সড সার্ভিস HTTP রিকোয়েস্ট হেডার গ্রহণ করার জন্য কনফিগার করা থাকে, এবং আপনি একটি রিকোয়েস্ট হেডার জাভাস্ক্রিপ্ট অবজেক্ট সেট করেন, তাহলে আপনাকে অবশ্যই অপশনাল প্যারামিটার জাভাস্ক্রিপ্ট অবজেক্টটিও সেট করতে হবে (যদি আপনি অপশনাল প্যারামিটার ব্যবহার না করেন তবে এটি একটি খালি অবজেক্ট হবে)।

উদাহরণ: Calendar.Events.insert

ক্যালেন্ডার ইভেন্ট তৈরি করতে:

গুগল ক্যালেন্ডার এপিআই ডকুমেন্টেশনে সংশ্লিষ্ট HTTP অনুরোধের কাঠামোটি দেখানো হয়েছে:

  • HTTP ভার্ব : POST
  • অনুরোধ URL : https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events
  • অনুরোধের মূল অংশ : একটি ইভেন্ট রিসোর্স

  • কোয়েরি প্যারামিটার : sendUpdates , supportsAttachments , ইত্যাদি।

অ্যাপস স্ক্রিপ্টে, এই ইনপুটগুলোর ক্রম পরিবর্তন করে মেথড সিগনেচার নির্ধারণ করা হয়:

  1. বডি : ইভেন্ট রিসোর্স (জাভাস্ক্রিপ্ট অবজেক্ট)।
  2. পাথ : calendarId (স্ট্রিং)।
  3. ঐচ্ছিক প্যারামিটার : কোয়েরি প্যারামিটার (জাভাস্ক্রিপ্ট অবজেক্ট)।

ফলস্বরূপ মেথড কলটি দেখতে এইরকম হয়:

const event = {
  summary: 'Lunch',
  location: 'Deli',
  start: {
    dateTime: '2026-01-01T12:00:00-05:00'
  },
  end: {
    dateTime: '2026-01-01T13:00:00-05:00'
  }
};
const calendarId = 'primary';
const optionalArgs = {
  sendUpdates: 'all'
};

Calendar.Events.insert(event, calendarId, optionalArgs);

উন্নত পরিষেবা নাকি HTTP?

প্রতিটি উন্নত গুগল পরিষেবা একটি পাবলিক গুগল এপিআই-এর সাথে যুক্ত থাকে। অ্যাপস স্ক্রিপ্টে, অ্যাডভান্সড সার্ভিসেস ব্যবহার করে অথবা UrlFetch ব্যবহার করে সরাসরি এপিআই রিকোয়েস্ট পাঠিয়ে এই এপিআইগুলো অ্যাক্সেস করা যায়।

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

যদি আপনি সরাসরি এপিআই অ্যাক্সেস করার জন্য UrlFetch মেথডটি ব্যবহার করেন , তাহলে আপনি মূলত গুগল এপিআই-কে একটি এক্সটার্নাল এপিআই হিসেবে গণ্য করছেন। এই পদ্ধতির মাধ্যমে এপিআই-এর সমস্ত দিক ব্যবহার করা যায়। তবে, আপনাকে অবশ্যই এপিআই অথরাইজেশনের বিষয়টি সামলাতে হবে।

নিম্নলিখিত সারণিতে দুটি পদ্ধতির তুলনা করা হয়েছে:

বৈশিষ্ট্য উন্নত পরিষেবা ইউআরএলফেচ (এইচটিটিপি)
অনুমোদন স্বয়ংক্রিয়ভাবে পরিচালিত ম্যানুয়াল হ্যান্ডলিং প্রয়োজন
স্বয়ংক্রিয় সম্পূর্ণতা উপলব্ধ উপলব্ধ নয়
কার্যকারিতার পরিধি এপিআই-এর একটি উপসেট হতে পারে সমস্ত এপিআই বৈশিষ্ট্যগুলিতে সম্পূর্ণ অ্যাক্সেস
জটিলতা সহজ আরও জটিল (হেডার তৈরি এবং প্রতিক্রিয়া পার্স করার প্রয়োজন হয়)

কোড তুলনা

কোড স্যাম্পলগুলো অ্যাডভান্সড সার্ভিস এবং UrlFetchApp ব্যবহার করে ক্যালেন্ডার ইভেন্ট তৈরি করার মধ্যকার জটিলতার পার্থক্য তুলে ধরে।

উন্নত পরিষেবা:

const event = {
  summary: 'Lunch',
  location: 'Deli',
  start: { dateTime: '2026-01-01T12:00:00-05:00' },
  end: { dateTime: '2026-01-01T13:00:00-05:00' }
};

const optionalArgs = {
  sendUpdates: 'all'
};

Calendar.Events.insert(event, 'primary', optionalArgs);

URLFetch (HTTP):

const event = {
  summary: 'Lunch',
  location: 'Deli',
  start: { dateTime: '2026-01-01T12:00:00-05:00' },
  end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events?sendUpdates=all';
const options = {
  method: 'post',
  contentType: 'application/json',
  headers: {
    Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
  },
  payload: JSON.stringify(event)
};

UrlFetchApp.fetch(url, options);

UrlFetchApp মেথডটির জন্য, স্ক্রিপ্টের ম্যানিফেস্ট ফাইলে প্রয়োজনীয় OAuth স্কোপগুলো ম্যানুয়ালি উল্লেখ করুন।

যখনই সম্ভব অ্যাডভান্সড সার্ভিস ব্যবহার করুন এবং শুধুমাত্র তখনই UrlFetch মেথডটি ব্যবহার করুন, যখন অ্যাডভান্সড সার্ভিসটি উপলব্ধ না থাকে বা আপনার প্রয়োজনীয় কার্যকারিতা প্রদান করে না।

উন্নত পরিষেবাগুলির জন্য সহায়তা

যেহেতু অ্যাডভান্সড সার্ভিসগুলো গুগল এপিআই-এর ওপর ভিত্তি করে তৈরি করা পাতলা র‍্যাপার, তাই এগুলো ব্যবহার করার সময় যে কোনো সমস্যা সাধারণত মূল এপিআই-এর হয়ে থাকে, অ্যাপস স্ক্রিপ্টের নয়।

উন্নত পরিষেবা ব্যবহার করার সময় আপনি যদি কোনো সমস্যার সম্মুখীন হন, তাহলে সংশ্লিষ্ট API-এর সাপোর্ট নির্দেশাবলী ব্যবহার করে তা জানান।