পরিষেবা অ্যাকাউন্ট ব্যবহার করে একটি Google Apps স্ক্রিপ্ট প্রকল্প হিসেবে প্রমাণীকরণ করুন

এই নির্দেশিকাটি ব্যাখ্যা করে যে অ্যাপস স্ক্রিপ্টে API কল করার সময় কীভাবে একটি পরিষেবা অ্যাকাউন্ট দিয়ে প্রমাণীকরণ করতে হয়।

একটি পরিষেবা অ্যাকাউন্ট হল একটি বিশেষ ধরণের অ্যাকাউন্ট যা কোনও ব্যক্তির পরিবর্তে একটি অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়। আপনি রোবট অ্যাকাউন্টের মাধ্যমে ডেটা অ্যাক্সেস করতে বা ক্রিয়া সম্পাদন করতে, অথবা Google Workspace বা Cloud Identity ব্যবহারকারীদের পক্ষে ডেটা অ্যাক্সেস করতে একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করতে পারেন। আরও তথ্যের জন্য, পরিষেবা অ্যাকাউন্টগুলি বোঝা দেখুন।

Google Workspace API-এর প্রমাণীকরণ সম্পর্কে একটি সংক্ষিপ্ত বিবরণের জন্য, অ্যাক্সেস শংসাপত্র তৈরি করুন দেখুন।

অ্যাপস স্ক্রিপ্টে পরিষেবা অ্যাকাউন্ট কখন ব্যবহার করবেন

ডিফল্টরূপে, Apps Script API গুলি কল করার জন্য স্ক্রিপ্ট ব্যবহারকারীর শংসাপত্র ব্যবহার করে। আপনি যদি UrlFetchApp ব্যবহার করে Google API গুলি কল করেন, তাহলে আপনি ScriptApp.getOAuthToken এ কল করে স্ক্রিপ্ট ব্যবহারকারীর জন্য একটি অ্যাক্সেস টোকেন পেতে পারেন।

তবে, কিছু পরিস্থিতিতে ScriptApp.getOAuthToken তুলনায় পরিষেবা অ্যাকাউন্ট ব্যবহার করা বেশ কিছু সুবিধা প্রদান করে। এই কারণগুলির জন্য পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ ব্যবহার করার কথা বিবেচনা করুন:

  • গুগল ক্লাউড এপিআই এবং পরিষেবাগুলির সাথে আরও ভাল পারফরম্যান্স : অনেক গুগল ক্লাউড এপিআই পরিষেবা অ্যাকাউন্ট প্রমাণীকরণের জন্য ডিজাইন করা হয়েছে। পরিষেবা অ্যাকাউন্টগুলি বেশিরভাগ এপিআইয়ের সাথে ইন্টারঅ্যাক্ট করার জন্য আরও সমন্বিত, নির্ভরযোগ্য এবং নিরাপদ উপায় প্রদান করতে পারে।
  • ডিকপলড পারমিশন : পরিষেবা অ্যাকাউন্টগুলির নিজস্ব অনুমতি থাকে, যেগুলি যেকোনো ব্যবহারকারীর থেকে আলাদা। অন্য ব্যবহারকারীদের সাথে প্রকল্পটি শেয়ার করার সময় ScriptApp.getOAuthToken প্রমাণীকরণ পদ্ধতি ব্যর্থ হতে পারে। পরিষেবা অ্যাকাউন্ট ব্যবহার করে, স্ক্রিপ্টগুলি শেয়ার করুন এবং সেগুলিকে Google Workspace অ্যাড-অন হিসাবে প্রকাশ করুন
  • স্বয়ংক্রিয় স্ক্রিপ্ট এবং দীর্ঘমেয়াদী কাজ : পরিষেবা অ্যাকাউন্টগুলি আপনাকে ব্যবহারকারীর ইনপুট ছাড়াই স্বয়ংক্রিয় স্ক্রিপ্ট, ব্যাচ প্রক্রিয়া বা ব্যাকগ্রাউন্ড কাজগুলি চালাতে দেয়।
  • উন্নত নিরাপত্তা এবং সর্বনিম্ন সুবিধার নীতি : গ্রান্ট পরিষেবা নির্দিষ্ট অনুমতি প্রদান করে, যা কেবলমাত্র তাদের প্রয়োজনীয় সংস্থানগুলিতে অ্যাক্সেস প্রদান করে। এটি সর্বনিম্ন সুবিধার নীতি অনুসরণ করে, যা নিরাপত্তা ঝুঁকি কমায়। ScriptApp.getOAuthToken ব্যবহার করে প্রায়শই একটি স্ক্রিপ্টকে সমস্ত ব্যবহারকারীর অনুমতি প্রদান করা হয়, যা খুব বিস্তৃত হতে পারে।
  • কেন্দ্রীভূত অ্যাক্সেস ব্যবস্থাপনা : পরিষেবা অ্যাকাউন্টগুলি গুগল ক্লাউডের আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করে পরিচালিত হয়। IAM গুগল ওয়ার্কস্পেস সংস্থাগুলিকে অ্যাপস স্ক্রিপ্ট প্রকল্পের মধ্যে প্রমাণীকরণকৃত পরিষেবাগুলিতে অ্যাক্সেস পরিচালনা করতে সহায়তা করে।

পূর্বশর্ত

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

আপনার ক্লাউড প্রজেক্টে, একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন:

গুগল ক্লাউড কনসোল

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > পরিষেবা অ্যাকাউন্ট এ যান।

    পরিষেবা অ্যাকাউন্টগুলিতে যান।

  2. পরিষেবা অ্যাকাউন্ট তৈরি করুন ক্লিক করুন।
  3. পরিষেবা অ্যাকাউন্টের বিবরণ পূরণ করুন, তারপর তৈরি করুন এবং চালিয়ে যান ক্লিক করুন।
  4. ঐচ্ছিক: আপনার Google ক্লাউড প্রোজেক্টের রিসোর্সে অ্যাক্সেস দেওয়ার জন্য আপনার পরিষেবা অ্যাকাউন্টে ভূমিকা নির্ধারণ করুন। আরও বিস্তারিত জানার জন্য, রিসোর্সে অ্যাক্সেস প্রদান, পরিবর্তন এবং প্রত্যাহার দেখুন।
  5. চালিয়ে যান ক্লিক করুন।
  6. ঐচ্ছিক: এই পরিষেবা অ্যাকাউন্টের মাধ্যমে পরিচালনা এবং কার্য সম্পাদন করতে পারে এমন ব্যবহারকারী বা গোষ্ঠীগুলি লিখুন। আরও বিস্তারিত জানার জন্য, পরিষেবা অ্যাকাউন্ট ছদ্মবেশ পরিচালনা দেখুন।
  7. সম্পন্ন ক্লিক করুন। পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানাটি লিখে রাখুন।

জিক্লাউড সিএলআই

  1. পরিষেবা অ্যাকাউন্ট তৈরি করুন:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. ঐচ্ছিক: আপনার Google ক্লাউড প্রোজেক্টের রিসোর্সে অ্যাক্সেস দেওয়ার জন্য আপনার পরিষেবা অ্যাকাউন্টে ভূমিকা নির্ধারণ করুন। আরও বিস্তারিত জানার জন্য, রিসোর্সে অ্যাক্সেস প্রদান, পরিবর্তন এবং প্রত্যাহার দেখুন।

পরিষেবা অ্যাকাউন্টে একটি ভূমিকা বরাদ্দ করুন

আপনাকে একটি সুপার অ্যাডমিনিস্ট্রেটর অ্যাকাউন্টের মাধ্যমে একটি পরিষেবা অ্যাকাউন্টে একটি পূর্বনির্মিত বা কাস্টম ভূমিকা বরাদ্দ করতে হবে।

  1. গুগল অ্যাডমিন কনসোলে, মেনু > অ্যাকাউন্ট > অ্যাডমিন রোল এ যান।

    অ্যাডমিন ভূমিকায় যান

  2. আপনি যে ভূমিকাটি বরাদ্দ করতে চান সেটি নির্দেশ করুন, এবং তারপর অ্যাডমিন বরাদ্দ করুন ক্লিক করুন।

  3. পরিষেবা অ্যাকাউন্ট বরাদ্দ করুন ক্লিক করুন।

  4. পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানা লিখুন।

  5. যোগ করুন > ভূমিকা বরাদ্দ করুন ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্টের জন্য শংসাপত্র তৈরি করুন

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

আপনার পরিষেবা অ্যাকাউন্টের জন্য শংসাপত্র পেতে:

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > পরিষেবা অ্যাকাউন্ট এ যান।

    পরিষেবা অ্যাকাউন্টগুলিতে যান।

  2. আপনার পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. কী > কী যোগ করুন > নতুন কী তৈরি করুন ক্লিক করুন।
  4. JSON নির্বাচন করুন, তারপর Create এ ক্লিক করুন।

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

  5. বন্ধ করুন ক্লিক করুন।

ক্লাউড প্রজেক্ট নম্বরটি কপি করুন

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > সেটিংস এ যান।

    IAM এবং অ্যাডমিন সেটিংসে যান।

  2. প্রজেক্ট নম্বর ক্ষেত্রে, মানটি অনুলিপি করুন।

আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ সেট আপ করুন

এই বিভাগটি ব্যাখ্যা করে কিভাবে আপনার ক্লাউড প্রজেক্ট থেকে অ্যাপস স্ক্রিপ্ট প্রজেক্টে আপনার পরিষেবা অ্যাকাউন্টের শংসাপত্র যোগ করবেন।

অ্যাপস স্ক্রিপ্টে আপনার ক্লাউড প্রোজেক্ট সেট করুন

  1. একটি প্রকল্প খুলতে বা তৈরি করতে অ্যাপস স্ক্রিপ্টে যান:


    অ্যাপস স্ক্রিপ্ট খুলুন

  2. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে, প্রজেক্ট সেটিংসে ক্লিক করুন। প্রকল্প সেটিংসের আইকন .

  3. গুগল ক্লাউড প্রোজেক্টের অধীনে, প্রোজেক্ট পরিবর্তন করুন এ ক্লিক করুন।

  4. গুগল ক্লাউড প্রজেক্ট নম্বরে , ক্লাউড প্রজেক্ট নম্বরটি পেস্ট করুন।

  5. প্রজেক্ট সেট করুন এ ক্লিক করুন।

শংসাপত্রগুলিকে স্ক্রিপ্ট সম্পত্তি হিসাবে সংরক্ষণ করুন।

আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্ট সেটিংসে স্ক্রিপ্ট প্রপার্টি হিসেবে সেভ করে আপনার পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি নিরাপদে সংরক্ষণ করুন:

  1. আপনার পরিষেবা অ্যাকাউন্ট JSON ফাইলের ( credentials.json ) বিষয়বস্তু কপি করুন, যা আপনি পূর্ববর্তী বিভাগে তৈরি করেছিলেন।
  2. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে, প্রজেক্ট সেটিংস এ যান।
  3. প্রজেক্ট সেটিংস পৃষ্ঠা থেকে, স্ক্রিপ্ট প্রোপার্টিজে যান এবং অ্যাড স্ক্রিপ্ট প্রোপার্টি ক্লিক করুন এবং নিম্নলিখিতটি লিখুন:
    • সম্পত্তি ক্ষেত্রে, SERVICE_ACCOUNT_KEY লিখুন।
    • মান ক্ষেত্রে, আপনার JSON কী ফাইলের বিষয়বস্তু পেস্ট করুন।
  4. স্ক্রিপ্টের বৈশিষ্ট্য সংরক্ষণ করুন ক্লিক করুন।

OAuth2 লাইব্রেরি যোগ করুন

OAuth2 প্রমাণীকরণ প্রবাহ পরিচালনা করতে, Apps Script লাইব্রেরি apps-script-oauth2 ব্যবহার করুন।

আপনার অ্যাপস স্ক্রিপ্ট প্রকল্পে লাইব্রেরি যোগ করতে:

  1. Apps Script এডিটরে, বাম দিকে, Libraries এর পাশে, Add a library ক্লিক করুন।
  2. স্ক্রিপ্ট আইডি ক্ষেত্রে, 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF লিখুন।
  3. উপরে দেখুন ক্লিক করুন।
  4. সর্বশেষ সংস্করণটি নির্বাচন করুন, এবং তারপর যোগ করুন ক্লিক করুন।

পরিষেবা অ্যাকাউন্ট শংসাপত্র ব্যবহার করে একটি API কল করুন

আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্ট থেকে পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করতে, আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন getServiceAccountService() :

/**
 * Get a new OAuth2 service for a given service account.
 */
function getServiceAccountService() {
  const serviceAccountKeyString = PropertiesService.getScriptProperties()
      .getProperty('SERVICE_ACCOUNT_KEY');

  if (!serviceAccountKeyString) {
    throw new Error('SERVICE_ACCOUNT_KEY property is not set. ' +
        'Please follow the setup instructions.');
  }

  const serviceAccountKey = JSON.parse(serviceAccountKeyString);

  const CLIENT_EMAIL = serviceAccountKey.client_email;
  const PRIVATE_KEY = serviceAccountKey.private_key;

  // Replace with the specific scopes required for your API.
  const SCOPES = ['SCOPE'];

  return OAuth2.createService('ServiceAccount')
      .setTokenUrl('https://oauth2.googleapis.com/token')
      .setPrivateKey(PRIVATE_KEY)
      .setIssuer(CLIENT_EMAIL)
      .setPropertyStore(PropertiesService.getScriptProperties())
      .setScope(SCOPES);
}

API কল করার জন্য SCOPE পরিবর্তে অথোরাইজেশন স্কোপ ব্যবহার করুন। স্ক্রিপ্টটি পূর্ববর্তী ধাপে SERVICE_ACCOUNT_KEY স্ক্রিপ্ট প্রপার্টি হিসেবে সংরক্ষিত পরিষেবা অ্যাকাউন্টের শংসাপত্র ব্যবহার করে।

এরপর আপনি এই শংসাপত্রগুলি ব্যবহার করে একটি API কল করতে পারেন, যেমনটি UrlFetch পরিষেবার সাথে নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

function callApi() {
  const service = getServiceAccountService();

  // TODO(developer): Replace with the payload
  const payload = {};

  // TODO(developer): Replace with the API endpoint
  const response = UrlFetchApp.fetch('API_URL', {
    method: 'post',
    headers: {
      'Authorization': `Bearer ${service.getAccessToken()}`,
      'Content-Type': 'application/json',
    },
    payload: payload,
  });

  const result = JSON.parse(response.getContentText());

  return result;
}

API_URL আপনি যে HTTP এন্ডপয়েন্টটি কল করছেন তা দিয়ে প্রতিস্থাপন করুন।