তৃতীয় পক্ষের API

Google বিজ্ঞাপন স্ক্রিপ্টগুলির একটি শক্তিশালী বৈশিষ্ট্য হল তৃতীয় পক্ষের API থেকে ডেটা এবং পরিষেবাগুলির সাথে একীভূত করার ক্ষমতা।

এই নির্দেশিকাটি নিম্নলিখিত ধারণাগুলিকে কভার করে যা আপনাকে অন্যান্য পরিষেবাগুলির সাথে সংযোগ করতে স্ক্রিপ্ট লিখতে সাহায্য করতে পারে:

  • এইচটিটিপি রিকোয়েস্ট করা : এক্সটার্নাল এপিআই অ্যাক্সেস করতে UrlFetchApp কীভাবে ব্যবহার করবেন।
  • প্রমাণীকরণ : আমরা কিছু সাধারণ প্রমাণীকরণ পরিস্থিতি কভার করি।
  • পার্সিং প্রতিক্রিয়া : কিভাবে ফিরে আসা JSON এবং XML ডেটা প্রক্রিয়া করা যায়।

UrlFetchApp দিয়ে ডেটা আনুন

UrlFetchApp তৃতীয় পক্ষের API-এর সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় মূল কার্যকারিতা প্রদান করে।

নিম্নলিখিত উদাহরণটি OpenWeatherMap থেকে আবহাওয়ার ডেটা আনার দেখায়। তুলনামূলকভাবে সহজ অনুমোদন স্কিম এবং API এর কারণে আমরা OpenWeatherMap বেছে নিয়েছি।

একটি অনুরোধ করুন

OpenWeatherMap ডকুমেন্টেশন নিম্নরূপ বর্তমান আবহাওয়া অনুরোধের বিন্যাস নির্দিষ্ট করে:

http://api.openweathermap.org/data/2.5/weather?q=[location]&apikey=[apikey]

URL আমাদের অনুমোদনের প্রথম উদাহরণ প্রদান করে: পরামিতি apikey প্রয়োজন, এবং মান প্রতিটি ব্যবহারকারীর জন্য অনন্য। এই কী সাইন আপের মাধ্যমে প্রাপ্ত হয়।

সাইন আপ করার পরে, কী ব্যবহার করে একটি অনুরোধ নিম্নরূপ জারি করা যেতে পারে:

const location = 'London,uk';
const apikey = 'da.......................81'; // Replace with your API key
const currentWeatherUrl = `http://api.openweathermap.org/data/2.5/weather?q=${location}&apiKey=${apiKey}`;
const response = UrlFetchApp.fetch(currentWeatherUrl);
console.log(response.getContentText());

এই কোডটি কার্যকর করার ফলে Google বিজ্ঞাপন স্ক্রিপ্টে লগিং উইন্ডোতে JSON পাঠ্যের একটি দীর্ঘ স্ট্রিং লেখা হয়।

পরবর্তী পদক্ষেপটি এটিকে একটি বিন্যাসে রূপান্তর করছে যা আপনার স্ক্রিপ্টের মধ্যে ব্যবহার করা যেতে পারে।

JSON ডেটা

অনেক API JSON ফর্ম্যাটে প্রতিক্রিয়া প্রদান করে। এটি জাভাস্ক্রিপ্ট অবজেক্টের একটি সাধারণ সিরিয়ালাইজেশনকে উপস্থাপন করে, যেমন অবজেক্ট, অ্যারে এবং মৌলিক প্রকারগুলিকে স্ট্রিং হিসাবে উপস্থাপন এবং স্থানান্তর করা যেতে পারে।

একটি JSON স্ট্রিংকে রূপান্তর করতে — যেমন OpenWeatherMap থেকে ফিরে এসেছে—একটি JavaScript অবজেক্টে, বিল্ট-ইন JSON.parse পদ্ধতি ব্যবহার করুন। উপরের উদাহরণ থেকে অবিরত:

const json = response.getContentText();
const weatherData = JSON.parse(json);
console.log(weatherData.name);
//  "London"

JSON.parse পদ্ধতি স্ট্রিংটিকে একটি বস্তুতে রূপান্তরিত করে, যার একটি সম্পত্তির name রয়েছে।

বিভিন্ন ফর্ম্যাটে API প্রতিক্রিয়াগুলির সাথে কাজ করার বিষয়ে আরও বিশদ বিবরণের জন্য পার্স প্রতিক্রিয়া বিভাগটি দেখুন।

ত্রুটি পরিচালনা

আপনার স্ক্রিপ্টে তৃতীয় পক্ষের APIগুলির সাথে কাজ করার সময় ত্রুটি পরিচালনা করা একটি গুরুত্বপূর্ণ বিবেচ্য কারণ তৃতীয় পক্ষের APIগুলি প্রায়শই পরিবর্তিত হয় এবং অপ্রত্যাশিত প্রতিক্রিয়া মান তৈরি করে, উদাহরণস্বরূপ:

  • API-এর URL বা পরামিতি আপনার অজান্তেই পরিবর্তিত হতে পারে।
  • আপনার API কী (বা অন্য ব্যবহারকারীর শংসাপত্র) মেয়াদ শেষ হতে পারে।
  • প্রতিক্রিয়ার বিন্যাস বিজ্ঞপ্তি ছাড়াই পরিবর্তন হতে পারে।

HTTP স্থিতি কোড

অপ্রত্যাশিত প্রতিক্রিয়ার সম্ভাবনার কারণে, আপনার HTTP স্থিতি কোড পরিদর্শন করা উচিত। ডিফল্টরূপে, HTTP ত্রুটি কোডের সম্মুখীন হলে UrlFetchApp একটি ব্যতিক্রম নিক্ষেপ করবে৷ এই আচরণটি পরিবর্তন করতে, নিম্নলিখিত উদাহরণের মতো একটি ঐচ্ছিক প্যারামিটার পাস করা প্রয়োজন:

const options = {
  muteHttpExceptions: true
}
const response = UrlFetchApp.fetch(url, options);
// Any status code greater or equal to 400 is either a client or server error.
if (response.getResponseCode() >= 400) {
  // Error encountered, send an email alert to the developer
  sendFailureEmail();
}

প্রতিক্রিয়া কাঠামো

যখন তৃতীয় পক্ষের এপিআই পরিবর্তন হয়, তখন ডেভেলপাররা প্রায়ই তাদের স্ক্রিপ্টগুলিকে প্রভাবিত করতে পারে এমন পরিবর্তনগুলি সম্পর্কে অবিলম্বে সচেতন হন না। উদাহরণস্বরূপ, যদি OpenWeatherMap উদাহরণে প্রত্যাবর্তিত name বৈশিষ্ট্যটি locationName এ পরিবর্তিত হয়, তাহলে এই সম্পত্তি ব্যবহার করে স্ক্রিপ্ট ব্যর্থ হবে।

এই কারণে প্রত্যাশিত কাঠামো ফিরে এসেছে কিনা তা পরীক্ষা করা উপকারী হতে পারে, উদাহরণস্বরূপ:

const weatherData = JSON.parse(json);
if (weatherData && weatherData.name) {
  console.log('Location is : ' + name);
} else {
  console.log('Data not in expected format');
}

UrlFetchApp দিয়ে ডেটা পোস্ট করুন

OpenWeatherMap-এর সাথে প্রাথমিক উদাহরণ শুধুমাত্র ডেটা আনা হয়েছে। সাধারণত, যে API কলগুলি দূরবর্তী সার্ভারে স্থিতি পরিবর্তন করে না সেগুলি HTTP GET পদ্ধতি ব্যবহার করে।

GET পদ্ধতিটি UrlFetchApp এর জন্য ডিফল্ট। যাইহোক, কিছু API কল, যেমন এসএমএস বার্তা পাঠায় এমন একটি পরিষেবাতে কল করার জন্য, POST বা PUT মতো অন্যান্য পদ্ধতির প্রয়োজন হবে।

UrlFetchApp এর সাথে POST কল ব্যবহার করে বোঝানোর জন্য, নিম্নলিখিত উদাহরণটি Slack ব্যবহারকারী এবং গোষ্ঠীকে একটি Slack বার্তা পাঠানোর জন্য Slack , একটি সহযোগী বার্তাপ্রেরণ অ্যাপ্লিকেশনের সাথে একীকরণ প্রদর্শন করে।

স্ল্যাক সেট আপ করুন

এই নির্দেশিকা অনুমান করে যে আপনি ইতিমধ্যে একটি স্ল্যাক অ্যাকাউন্টের জন্য সাইন আপ করেছেন

আগের উদাহরণে OpenWeatherMap-এর মতো, বার্তা পাঠানো সক্ষম করতে একটি টোকেন প্রাপ্ত করা প্রয়োজন। স্ল্যাক আপনাকে আপনার দলকে বার্তা পাঠাতে অনুমতি দেওয়ার জন্য একটি অনন্য URL প্রদান করে, যাকে বলা হয় ইনকামিং ওয়েবহুক

Add Incoming WebHooks ইন্টিগ্রেশনে ক্লিক করে এবং নির্দেশাবলী অনুসরণ করে একটি ইনকামিং ওয়েবহুক সেট আপ করুন । প্রক্রিয়াটি বার্তা পাঠানোর জন্য ব্যবহার করার জন্য একটি URL জারি করা উচিত।

একটি পোস্ট অনুরোধ করুন

আপনার ইনকামিং ওয়েবহুক সেট আপ করার পরে, একটি POST অনুরোধ করার জন্য UrlFetchApp.fetch এ পাস করা options প্যারামিটারে কিছু অতিরিক্ত বৈশিষ্ট্য ব্যবহার করা প্রয়োজন:

  • method : উল্লিখিত হিসাবে, এটি ডিফল্ট GET , কিন্তু এখানে আমরা এটিকে ওভাররাইড করে POST এ সেট করি।
  • payload : এটি POST অনুরোধের অংশ হিসাবে সার্ভারে পাঠানো ডেটা। এই উদাহরণে, স্ল্যাক ডকুমেন্টেশনে বর্ণিত একটি অবজেক্টকে JSON ফর্ম্যাটে সিরিয়াল করা আশা করে। এর জন্য, JSON.stringify পদ্ধতি ব্যবহার করা হয়, এবং Content-Type application/json এ সেট করা হয়।

      // Change the URL for the one issued to you from 'Setting up Slack'.
      const SLACK_URL = 'https://hooks.slack.com/services/AAAA/BBBB/CCCCCCCCCC';
      const slackMessage = {
        text: 'Hello, slack!'
      };
    
      const options = {
        method: 'POST',
        contentType: 'application/json',
        payload: JSON.stringify(slackMessage)
      };
      UrlFetchApp.fetch(SLACK_URL, options);
    

বর্ধিত স্ল্যাক উদাহরণ

উপরের উদাহরণটি স্ল্যাকে ইনকামিং বার্তাগুলি সক্ষম করতে সর্বনিম্ন দেখায়৷ একটি বর্ধিত নমুনা একটি গোষ্ঠীতে একটি প্রচারাভিযান কর্মক্ষমতা প্রতিবেদন তৈরি এবং পাঠানোর পাশাপাশি কিছু বিন্যাস এবং প্রদর্শন বিকল্পগুলিকে চিত্রিত করে৷

ইনকামিং বার্তা

স্ল্যাক বার্তা সম্পর্কে আরও বিশদ বিবরণের জন্য স্ল্যাক ডকুমেন্টেশনে বার্তা বিন্যাস দেখুন।

ফর্ম ডেটা

উপরের উদাহরণটি POST অনুরোধের জন্য payload সম্পত্তি হিসাবে একটি JSON স্ট্রিং ব্যবহার করে প্রদর্শিত হয়েছে।

payload বিন্যাসের উপর নির্ভর করে, UrlFetchApp POST অনুরোধ তৈরি করতে বিভিন্ন পন্থা গ্রহণ করে:

  • যখন payload একটি স্ট্রিং হয়, তখন স্ট্রিং আর্গুমেন্ট অনুরোধের মূল অংশ হিসাবে পাঠানো হয়।
  • যখন payload একটি বস্তু, উদাহরণস্বরূপ মানগুলির একটি মানচিত্র:

    {to: 'mail@example.com', subject:'Test', body:'Hello, World!'}
    

    কী/মান জোড়া ফর্ম-ডেটাতে রূপান্তরিত হয়:

    subject=Test&to=mail@example.com&body=Hello,+World!
    

    এছাড়াও অনুরোধের জন্য Content-Type শিরোনামটি application/x-www-form-urlencoded এ সেট করা আছে।

POST অনুরোধ জমা দেওয়ার সময় কিছু API-এর ফর্ম ডেটা ব্যবহারের প্রয়োজন হয়, তাই জাভাস্ক্রিপ্ট অবজেক্ট থেকে ডেটা ফর্মে এই স্বয়ংক্রিয় রূপান্তরটি মনে রাখা দরকারী।

HTTP মৌলিক প্রমাণীকরণ

এইচটিটিপি মৌলিক প্রমাণীকরণ হল প্রমাণীকরণের সহজতম ফর্মগুলির মধ্যে একটি এবং এটি অনেক API দ্বারা ব্যবহৃত হয়।

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

HTTP মৌলিক প্রমাণীকরণ

একটি অনুরোধ তৈরি করুন

একটি প্রমাণীকৃত অনুরোধ তৈরি করতে নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:

  1. একটি কোলন সহ ব্যবহারকারীর নাম এবং পাসওয়ার্ড একসাথে যুক্ত করে পাসফ্রেজ তৈরি করুন, উদাহরণস্বরূপ username:password
  2. Base64 পাসফ্রেজ এনকোড করে, উদাহরণস্বরূপ username:password হয়ে যায় dXNlcm5hbWU6cGFzc3dvcmQ=
  3. অনুরোধের সাথে একটি Authorization শিরোনাম সংযুক্ত করুন, ফর্ম Authorization: Basic <encoded passphrase>

Google বিজ্ঞাপন স্ক্রিপ্টে কীভাবে এটি অর্জন করা যায় তা নিম্নলিখিত স্নিপেটটি ব্যাখ্যা করে:

const USERNAME = 'your_username';
const PASSWORD = 'your_password';
const API_URL = 'http://<place_api_url_here>';

const authHeader = 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD);
const options = {
  headers: {Authorization: authHeader}
}
// Include 'options' object in every request
const response = UrlFetchApp.fetch(API_URL, options);

প্লিভো

Plivo হল একটি পরিষেবা যা তাদের API এর মাধ্যমে SMS বার্তা প্রেরণ এবং গ্রহণের সুবিধা দেয়। এই নমুনাটি বার্তা পাঠানোর চিত্র তুলে ধরে।

  1. Plivo এর সাথে নিবন্ধন করুন।
  2. Google বিজ্ঞাপনে একটি নতুন স্ক্রিপ্টে নমুনা স্ক্রিপ্ট পেস্ট করুন।
  3. ম্যানেজমেন্ট ড্যাশবোর্ডের মানগুলির সাথে PLIVO_ACCOUNT_AUTHID এবং PLIVO_ACCOUNT_AUTHTOKEN মানগুলি প্রতিস্থাপন করুন৷
  4. ত্রুটির বিজ্ঞপ্তির জন্য স্ক্রিপ্টে উল্লিখিত হিসাবে আপনার ইমেল ঠিকানা ঢোকান।
  5. Plivo ব্যবহার করতে, আপনাকে অবশ্যই নম্বর কিনতে হবে বা ট্রায়াল অ্যাকাউন্টে নম্বর যোগ করতে হবে। স্যান্ডবক্স নম্বর যোগ করুন যা ট্রায়াল অ্যাকাউন্টের সাথে ব্যবহার করা যেতে পারে।
  6. যে নম্বরটি প্রেরক হিসাবে প্রদর্শিত হবে এবং প্রাপকের নম্বর উভয়ই যোগ করুন।
  7. এইমাত্র নিবন্ধিত স্যান্ডবক্স নম্বরগুলির একটিতে স্ক্রিপ্টে PLIVO_SRC_PHONE_NUMBER আপডেট করুন৷ এটিতে আন্তর্জাতিক দেশের কোড অন্তর্ভুক্ত করা উচিত, উদাহরণস্বরূপ 447777123456 UK নম্বরের জন্য।

টুইলিও

Twilio হল আরেকটি পরিষেবা যা তাদের API এর মাধ্যমে এসএমএস বার্তা প্রেরণ এবং গ্রহণের সুবিধা দেয়। এই নমুনাটি বার্তা পাঠানোর চিত্র তুলে ধরে।

  1. Twillio এর সাথে নিবন্ধন করুন।
  2. Google বিজ্ঞাপনে একটি নতুন স্ক্রিপ্টে নমুনা স্ক্রিপ্ট পেস্ট করুন।
  3. অ্যাকাউন্ট কনসোল পৃষ্ঠায় দেখানো মানগুলির সাথে TWILIO_ACCOUNT_SID এবং TWILIO_ACCOUNT_AUTHTOKEN মানগুলি প্রতিস্থাপন করুন৷
  4. ড্যাশবোর্ডের নম্বর দিয়ে TWILIO_SRC_PHONE_NUMBER প্রতিস্থাপন করুন --এটি বার্তা পাঠানোর জন্য Twilio দ্বারা অনুমোদিত নম্বর৷

OAuth 1.0

অনেক জনপ্রিয় পরিষেবা প্রমাণীকরণের জন্য OAuth ব্যবহার করে। OAuth বিভিন্ন স্বাদ এবং সংস্করণে আসে।

যেখানে HTTP মৌলিক প্রমাণীকরণের সাথে, একজন ব্যবহারকারীর শুধুমাত্র একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড থাকে, OAuth তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে সেই তৃতীয় পক্ষের অ্যাপ্লিকেশনের জন্য নির্দিষ্ট শংসাপত্র ব্যবহার করে ব্যবহারকারীর অ্যাকাউন্ট এবং ডেটাতে অ্যাক্সেস দেওয়ার অনুমতি দেয়৷ উপরন্তু, অ্যাক্সেসের পরিমাণও সেই অ্যাপ্লিকেশনের জন্য নির্দিষ্ট হবে।

OAuth 1.0 এর ব্যাকগ্রাউন্ডের জন্য, OAuth কোর গাইড দেখুন। বিশেষ করে, দেখুন 6. OAuth দিয়ে প্রমাণীকরণ । সম্পূর্ণ তিন পায়ের OAuth 1.0-এ, প্রক্রিয়াটি নিম্নরূপ:

  1. অ্যাপ্লিকেশন ("ভোক্তা") একটি অনুরোধ টোকেন পায়।
  2. ব্যবহারকারী অনুরোধ টোকেন অনুমোদন.
  3. অ্যাপ্লিকেশনটি একটি অ্যাক্সেস টোকেনের জন্য অনুরোধ টোকেন বিনিময় করে।
  4. পরবর্তী সমস্ত সংস্থান অনুরোধের জন্য , অ্যাক্সেস টোকেন একটি স্বাক্ষরিত অনুরোধে ব্যবহৃত হয়।

থার্ড-পার্টি পরিষেবার জন্য ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়া OAuth 1.0 ব্যবহার করার জন্য (যেমন Google বিজ্ঞাপন স্ক্রিপ্টের প্রয়োজন হবে) ধাপ 1,2 এবং 3 সম্ভব নয়। তাই, কিছু পরিষেবা তাদের কনফিগারেশন কনসোল থেকে একটি অ্যাক্সেস টোকেন জারি করে, যা অ্যাপ্লিকেশনটিকে সরাসরি ধাপ 4-এ যেতে দেয়। এটি ওয়ান-লেগড OAuth 1.0 নামে পরিচিত।

OAuth1

Google বিজ্ঞাপন স্ক্রিপ্টে OAuth 1.0

Google বিজ্ঞাপন স্ক্রিপ্টের জন্য, প্রতিটি স্ক্রিপ্ট সাধারণত একটি অ্যাপ্লিকেশন হিসাবে ব্যাখ্যা করা হয়। পরিষেবার জন্য কনসোল/প্রশাসন সেটিংস পৃষ্ঠার মাধ্যমে, এটি সাধারণত:

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

OAuth 2.0

OAuth 2.0 ব্যবহারকারীর ডেটাতে অ্যাক্সেস প্রদানের জন্য জনপ্রিয় APIগুলিতে ব্যবহৃত হয়। একটি প্রদত্ত তৃতীয় পক্ষের পরিষেবার জন্য একটি অ্যাকাউন্টের মালিক নির্দিষ্ট অ্যাপ্লিকেশনগুলিকে ব্যবহারকারীর ডেটা অ্যাক্সেস করার অনুমতি দেওয়ার জন্য অনুমতি দেয়৷ সুবিধা হল মালিক:

  • আবেদনের সাথে তাদের অ্যাকাউন্টের শংসাপত্রগুলি ভাগ করতে হবে না।
  • কোন অ্যাপ্লিকেশানগুলি পৃথকভাবে ডেটা অ্যাক্সেস করতে পারে এবং কতটা পর্যন্ত তা নিয়ন্ত্রণ করতে পারে৷ (উদাহরণস্বরূপ, প্রদত্ত অ্যাক্সেস শুধুমাত্র পঠনযোগ্য হতে পারে, বা শুধুমাত্র ডেটার একটি উপসেট হতে পারে।)

Google বিজ্ঞাপন স্ক্রিপ্টে OAuth 2.0-সক্ষম পরিষেবাগুলি ব্যবহার করতে, বেশ কয়েকটি ধাপ রয়েছে:

আপনার স্ক্রিপ্টের বাইরে

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

আপনি Google বিজ্ঞাপন স্ক্রিপ্ট অ্যাপ্লিকেশনের কোন অ্যাক্সেস অধিকার দেওয়া উচিত তা উল্লেখ করুন এবং এটি সাধারণত একটি ক্লায়েন্ট আইডি বরাদ্দ করা হবে। এটি আপনাকে OAuth 2 এর মাধ্যমে তৃতীয় পক্ষের পরিষেবাতে কোন অ্যাপ্লিকেশনগুলির আপনার ডেটাতে অ্যাক্সেস রয়েছে তা নিয়ন্ত্রণ করতে এবং সেই ডেটার কোন দিকগুলি তারা দেখতে বা পরিবর্তন করতে পারে তা নিয়ন্ত্রণ করতে দেয়৷

তোমার স্ক্রিপ্টে

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

API অনুরোধ করুন । প্রতিটি অনুরোধের সাথে অ্যাক্সেস টোকেন পাস করুন।

অনুমোদন প্রবাহ

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

এপিআই প্রদানকারীরা সিদ্ধান্ত নেবে যে তারা কোন ধরনের অনুদান গ্রহণ করবে এবং এটি ব্যবহারকারী তাদের API একীভূত করার সাথে কীভাবে এগিয়ে যাবে তা নির্দেশ করবে।

বাস্তবায়ন

সমস্ত বিভিন্ন OAuth প্রবাহের জন্য, লক্ষ্য হল একটি অ্যাক্সেস টোকেন প্রাপ্ত করা যা অনুরোধগুলি প্রমাণীকরণের জন্য বাকি সেশনের জন্য ব্যবহার করা যেতে পারে।

একটি নমুনা লাইব্রেরি , প্রতিটি ভিন্ন প্রবাহের প্রকারের জন্য কীভাবে প্রমাণীকরণ করা যায় তা ব্যাখ্যা করে। এই পদ্ধতিগুলির প্রতিটি একটি বস্তু ফেরত দেয় যা অ্যাক্সেস টোকেন প্রাপ্ত করে এবং সঞ্চয় করে এবং প্রমাণীকৃত অনুরোধগুলিকে সহজ করে।

সাধারণ ব্যবহার প্যাটার্ন হল:

// Authenticate using chosen flow type
const urlFetchObj = OAuth2.<flow method>(args);
// Make request(s) using obtained object.
const response1 = urlFetchObj.fetch(url1);
const response2 = urlFetchObj.fetch(url2, options);

ক্লায়েন্ট শংসাপত্র অনুদান

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

ক্লায়েন্ট শংসাপত্র

// Access token is obtained and cached.
const authUrlFetch = OAuth2.withClientCredentials(
    tokenUrl, clientId, clientSecret, optionalScope));
// Use access token in each request
const response = authUrlFetch.fetch(url);
// ... use response

রিফ্রেশ টোকেন অনুদান

রিফ্রেশ টোকেন অনুদান ক্লায়েন্ট শংসাপত্র অনুদানের অনুরূপ, যেহেতু সার্ভারের কাছে একটি সাধারণ অনুরোধ একটি অ্যাক্সেস টোকেন ফেরত দেবে যা সেশনে ব্যবহার করা যেতে পারে।

টোকেন রিফ্রেশ করুন

একটি রিফ্রেশ টোকেন পান

রিফ্রেশ টোকেন অনুদানের সাথে পার্থক্য হল যে যেখানে একটি ক্লায়েন্ট শংসাপত্র অনুদানের জন্য প্রয়োজনীয় বিশদগুলি অ্যাপ্লিকেশন কনফিগারেশন থেকে আসে (উদাহরণস্বরূপ, পরিষেবার নিয়ন্ত্রণ প্যানেলে), রিফ্রেশ টোকেনটি আরও জটিল প্রবাহের অংশ হিসাবে দেওয়া হয়, যেমন একটি অনুমোদন কোড অনুদান হিসাবে, যার জন্য ব্যবহারকারীর মিথস্ক্রিয়া প্রয়োজন হবে:

অনুমোদন কোড

একটি রিফ্রেশ টোকেন পেতে OAuth খেলার মাঠ ব্যবহার করুন৷

OAuth2 খেলার মাঠ একটি UI প্রদান করে যা ব্যবহারকারীকে একটি রিফ্রেশ টোকেন পাওয়ার জন্য অনুমোদন কোড অনুদানের মধ্য দিয়ে যেতে দেয়।

উপরের ডানদিকের সেটিংস বোতামটি আপনাকে OAuth প্রবাহে ব্যবহার করার জন্য সমস্ত পরামিতি সংজ্ঞায়িত করতে দেয়, যার মধ্যে রয়েছে:

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

OAuth খেলার মাঠ

একটি রিফ্রেশ টোকেন প্রাপ্ত করার জন্য একটি স্ক্রিপ্ট ব্যবহার করে৷

প্রবাহ সম্পূর্ণ করার জন্য একটি স্ক্রিপ্ট-ভিত্তিক বিকল্প রিফ্রেশ টোকেন প্রজন্মের নমুনায় পাওয়া যায়।

টোকেন ব্যবহার রিফ্রেশ করুন

একবার প্রাথমিক অনুমোদন সঞ্চালিত হয়ে গেলে, পরিষেবাগুলি একটি রিফ্রেশ টোকেন জারি করতে পারে যা ক্লায়েন্ট শংসাপত্র প্রবাহের অনুরূপভাবে ব্যবহার করা যেতে পারে। দুটি উদাহরণ নীচে দেওয়া হল:

const authUrlFetch = OAuth2.withRefreshToken(tokenUrl, clientId, clientSecret,
    refreshToken, optionalScope);
const response = authUrlFetch.fetch(url);
// ... use response

অনুসন্ধান বিজ্ঞাপন 360 উদাহরণ

Search Ads 360 হল একটি API এর একটি উদাহরণ যা একটি রিফ্রেশ টোকেনের সাথে ব্যবহার করা যেতে পারে। এই নমুনায়, একটি স্ক্রিপ্ট তৈরি করে এবং একটি প্রতিবেদন প্রদান করে । অন্যান্য অ্যাকশন সম্পাদিত হতে পারে তার সম্পূর্ণ বিবরণের জন্য Search Ads 360 API রেফারেন্স দেখুন।

স্ক্রিপ্ট তৈরি করুন
  1. API কনসোলে একটি নতুন প্রকল্প তৈরি করুন এবং DoubleClick নির্দেশিকাতে পদ্ধতি অনুসরণ করে একটি ক্লায়েন্ট আইডি, ক্লায়েন্ট সিক্রেট এবং রিফ্রেশ টোকেন প্রাপ্ত করুন, নিশ্চিত করুন যে আপনি DoubleClick অনুসন্ধান API সক্ষম করেছেন৷
  2. Google বিজ্ঞাপনে একটি নতুন স্ক্রিপ্টে নমুনা স্ক্রিপ্ট পেস্ট করুন।
  3. কোড তালিকার নিচে নমুনা OAuth2 লাইব্রেরি পেস্ট করুন।
  4. ক্লায়েন্ট আইডি, ক্লায়েন্ট সিক্রেট এবং রিফ্রেশ টোকেনের জন্য সঠিক মান ধারণ করতে স্ক্রিপ্টটি সংশোধন করুন।

অ্যাপস স্ক্রিপ্ট এক্সিকিউশন API উদাহরণ

এই উদাহরণটি অ্যাপস স্ক্রিপ্ট এক্সিকিউশন API ব্যবহার করে অ্যাপস স্ক্রিপ্টে একটি ফাংশন চালানোর চিত্র তুলে ধরে। এটি Google বিজ্ঞাপন স্ক্রিপ্ট থেকে Apps স্ক্রিপ্ট কল করতে দেয়।

একটি অ্যাপস স্ক্রিপ্ট স্ক্রিপ্ট তৈরি করুন

একটি নতুন স্ক্রিপ্ট তৈরি করুন । নিম্নলিখিত নমুনাটি ড্রাইভ থেকে 10টি ফাইলের তালিকা করবে:

function listFiles() {
  const limit = 10;
  const files = [];
  const fileIterator = DriveApp.getFiles();
  while (fileIterator.hasNext() && limit) {
    files.push(fileIterator.next().getName());
    limit--;
  }
  return files;
}
এক্সিকিউশনের জন্য অ্যাপস স্ক্রিপ্ট কনফিগার করুন
  1. স্ক্রিপ্ট সংরক্ষণ করুন.
  2. সম্পদ > ক্লাউড প্ল্যাটফর্ম প্রকল্পে ক্লিক করুন।
  3. API কনসোলে নেভিগেট করতে প্রকল্পের নামে ক্লিক করুন।
  4. APIs এবং পরিষেবাগুলিতে নেভিগেট করুন।
  5. উপযুক্ত API সক্রিয় করুন, এই ক্ষেত্রে ড্রাইভ API , এবং Apps স্ক্রিপ্ট এক্সিকিউশন API
  6. মেনুতে শংসাপত্র আইটেম থেকে OAuth শংসাপত্র তৈরি করুন।
  7. আপনার স্ক্রিপ্টে ফিরে, Publish > Deploy as API Executable থেকে সম্পাদনের জন্য স্ক্রিপ্টটি প্রকাশ করুন।
Google Ads স্ক্রিপ্ট তৈরি করুন
  1. Google বিজ্ঞাপনে একটি নতুন স্ক্রিপ্টে নমুনা স্ক্রিপ্ট পেস্ট করুন।
  2. অতিরিক্তভাবে, কোড তালিকার নিচে নমুনা OAuth2 লাইব্রেরি পেস্ট করুন।
  3. ক্লায়েন্ট আইডি, ক্লায়েন্ট সিক্রেট এবং রিফ্রেশ টোকেনের জন্য সঠিক মান ধারণ করতে স্ক্রিপ্টটি সংশোধন করুন।

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

উপরের অনুদান প্রকারের একটি বিকল্প হল পরিষেবা অ্যাকাউন্টের ধারণা।

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

Google প্রাকৃতিক ভাষা API উদাহরণ

প্রাকৃতিক ভাষা API পাঠ্যের জন্য অনুভূতি বিশ্লেষণ এবং সত্তা বিশ্লেষণ প্রদান করে।

এই উদাহরণটি শিরোনাম বা বিবরণ সহ বিজ্ঞাপন পাঠ্যের অনুভূতি গণনা করার চিত্র তুলে ধরে। এটি বার্তাটি কতটা ইতিবাচক এবং বার্তার মাত্রার জন্য একটি পরিমাপ প্রদান করে: কোনটি ভাল, আমরা কেক বিক্রি করি বা আমরা লন্ডনে সেরা কেক বিক্রি করি৷ আজ কিনুন! ?

স্ক্রিপ্ট সেট আপ করুন
  1. API কনসোলে একটি নতুন প্রকল্প তৈরি করুন
  2. Natural Language API সক্ষম করুন৷
  3. প্রকল্পের জন্য বিলিং সক্ষম করুন৷
  4. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন । শংসাপত্র JSON ফাইল ডাউনলোড করুন.
  5. Google বিজ্ঞাপনে একটি নতুন স্ক্রিপ্টে নমুনা স্ক্রিপ্ট পেস্ট করুন।
  6. অতিরিক্তভাবে, কোড তালিকার নিচে নমুনা OAuth2 লাইব্রেরি পেস্ট করুন।
  7. প্রয়োজনীয় মান প্রতিস্থাপন করুন:
    • serviceAccount : সার্ভিস অ্যাকাউন্টের ইমেল ঠিকানা যেমন xxxxx@yyyy.iam.gserviceaccount.com
    • key : পরিষেবা অ্যাকাউন্ট তৈরি করার সময় ডাউনলোড করা JSON ফাইল থেকে কী। শুরু হয় -----BEGIN PRIVATE KEY... এবং শেষ হয় ...END PRIVATE KEY-----\n

API প্রতিক্রিয়া

APIগুলি বিভিন্ন বিন্যাসে ডেটা ফেরত দিতে পারে। এর মধ্যে সবচেয়ে উল্লেখযোগ্য হল XML এবং JSON।

JSON

প্রতিক্রিয়া বিন্যাস হিসাবে কাজ করার জন্য JSON সাধারণত XML এর চেয়ে সহজ। যাইহোক, এখনও কিছু সমস্যা আছে যা উঠতে পারে।

প্রতিক্রিয়া বৈধতা

API-তে কল থেকে একটি সফল প্রতিক্রিয়া প্রাপ্ত হওয়ার পর, সাধারণ পরবর্তী ধাপ হল JSON স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করতে JSON.parse ব্যবহার করা। এই মুহুর্তে, পার্সিং ব্যর্থ হলে কেসটি পরিচালনা করা বুদ্ধিমান:

const json = response.getContentText();
try {
  const data = JSON.parse(json);
  return data;
} catch(e) {
  // Parsing of JSON failed - handle error.
}

এছাড়াও, যদি API আপনার নিয়ন্ত্রণে না থাকে, তাহলে বিবেচনা করুন যে প্রতিক্রিয়ার গঠন পরিবর্তিত হতে পারে এবং বৈশিষ্ট্যগুলি আর বিদ্যমান নাও থাকতে পারে:

// Less good approach
// Assumes JSON was in form {"queryResponse": ...} when parsed.
const answer = data.queryResponse;

// Better approach
if (data && data.queryResponse) {
  const answer = data.queryResponse;
} else {
  // Format of API response has changed - alert developer or handle accordingly
}

এক্সএমএল

বৈধতা

XML এখনও API তৈরির জন্য একটি জনপ্রিয় বিন্যাস। একটি API কল থেকে একটি প্রতিক্রিয়া XmlService parse পদ্ধতি ব্যবহার করে পার্স করা যেতে পারে:

const responseText = response.getContentText();
try {
  const document = XmlService.parse(responseText);
} catch(e) {
  // Error in XML representation - handle accordingly.
}

যদিও XmlService.parse XML-এ ত্রুটি সনাক্ত করে এবং সেই অনুযায়ী ব্যতিক্রমগুলি নিক্ষেপ করে, এটি একটি স্কিমার বিরুদ্ধে XML যাচাই করার ক্ষমতা প্রদান করে না।

মূল উপাদান

এক্সএমএল নথির সফল পার্সিং দেওয়া হলে, রুট উপাদানটি getRootElement() পদ্ধতি ব্যবহার করে প্রাপ্ত হয়:

const document = XmlService.parse(responseText);
const rootElement = document.getRootElement();

নামস্থান

নিম্নলিখিত উদাহরণে, নির্বাচিত ম্যাচের জন্য সকার ফলাফল পেতে Sportradar API ব্যবহার করা হয়। XML প্রতিক্রিয়া নিম্নলিখিত বিন্যাস নেয়:

<schedule xmlns="http://feed.elasticstats.com/schema/soccer/sr/v2/matches-schedule.xsd">
  <matches>
     ...
  </matches>
</schedule>

রুট এলিমেন্টে নেমস্পেস কীভাবে নির্দিষ্ট করা হয়েছে তা লক্ষ্য করুন। এই কারণে, এটি প্রয়োজনীয়:

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

নিম্নলিখিত নমুনাটি উপরের নথির স্নিপেটে <matches> উপাদানটি কীভাবে অ্যাক্সেস করতে হয় তা দেখায়:

const document = XmlService.parse(xmlText);
const scheduleElement = document.getRootElement();
// The namespace is required for accessing child elements in the schema.
const namespace = scheduleElement.getNamespace();
const matchesElement = scheduleElement.getChild('matches', namespace);

মান প্রাপ্ত

ফুটবল সময়সূচী থেকে নমুনা দেওয়া:

<match status="..." category="..." ... >
  ...
</match>

গুণাবলী পুনরুদ্ধার করা যেতে পারে, উদাহরণস্বরূপ:

const status = matchElement.getAttribute('status').getValue();

একটি এলিমেন্টের মধ্যে থাকা টেক্সট getText() ব্যবহার করে পড়া যায়, কিন্তু যেখানে একটি এলিমেন্টের একাধিক টেক্সট চাইল্ড থাকে সেখানে এগুলি একত্রিত হবে। getChildren() ব্যবহার করার কথা বিবেচনা করুন এবং একাধিক টেক্সট শিশুর সম্ভাবনা থাকলে প্রতিটি শিশুর উপর পুনরাবৃত্তি করুন।

Sportradar উদাহরণ

এই সম্পূর্ণ Sportradar উদাহরণটি সকার ম্যাচের বিবরণ পুনরুদ্ধারের চিত্রিত করে, বিশেষ করে ইংলিশ প্রিমিয়ার লিগের ম্যাচগুলি। Soccer API হল Sportradar দ্বারা অফার করা স্পোর্টস ফিডগুলির একটি বৃহৎ পরিসরের একটি।

একটি Sportradar অ্যাকাউন্ট সেট আপ করুন
  1. Sportradar বিকাশকারী সাইটে নেভিগেট করুন
  2. একটি ট্রায়াল অ্যাকাউন্টের জন্য নিবন্ধন করুন।
  3. নিবন্ধন করার পরে, আপনার অ্যাকাউন্টে সাইন ইন করুন।
  4. একবার লগ ইন করলে, MyAccount- এ নেভিগেট করুন।

Sportradar বিভিন্ন স্পোর্টসকে বিভিন্ন API এ আলাদা করে। উদাহরণস্বরূপ, আপনি Soccer API-তে অ্যাক্সেস কিনতে পারেন কিন্তু টেনিস API নয়। আপনার তৈরি করা প্রতিটি অ্যাপ্লিকেশানের সাথে যুক্ত বিভিন্ন স্পোর্টস এবং বিভিন্ন কী থাকতে পারে।

  1. অ্যাপ্লিকেশনের অধীনে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন ক্লিক করুন। অ্যাপ্লিকেশনটিকে একটি নাম এবং বিবরণ দিন এবং ওয়েবসাইট ক্ষেত্রটিকে উপেক্ষা করুন৷
  2. সকার ট্রায়াল ইউরোপ v2 এর জন্য শুধুমাত্র ইস্যু একটি নতুন কী নির্বাচন করুন।
  3. আবেদন নিবন্ধন ক্লিক করুন.

একবার সফল হলে, এটিতে আপনার নতুন API কী সহ একটি পৃষ্ঠা তৈরি করা উচিত।

  1. Google বিজ্ঞাপনে একটি নতুন স্ক্রিপ্টে নমুনা স্ক্রিপ্ট পেস্ট করুন।
  2. তালিকার API কীটি উপরে প্রাপ্ত কী দিয়ে প্রতিস্থাপন করুন এবং ইমেল ঠিকানা ক্ষেত্রটি সম্পাদনা করুন।

সমস্যা সমাধান

থার্ড-পার্টি এপিআই-এর সাথে কাজ করা, বিভিন্ন কারণে ত্রুটি ঘটতে পারে, উদাহরণস্বরূপ:

  • ক্লায়েন্ট সার্ভারে অনুরোধ জারি করে এমন একটি বিন্যাসে যা API দ্বারা প্রত্যাশিত নয়৷
  • ক্লায়েন্টরা সম্মুখীন হওয়া থেকে ভিন্ন একটি প্রতিক্রিয়া বিন্যাস আশা করছে।
  • ক্লায়েন্ট অবৈধ টোকেন বা কী ব্যবহার করে, অথবা স্থানধারক হিসাবে রেখে যাওয়া মানগুলি।
  • ক্লায়েন্ট ব্যবহার সীমা আঘাত.
  • অবৈধ পরামিতি সরবরাহকারী ক্লায়েন্ট।

এই সমস্ত ক্ষেত্রে এবং অন্যান্য ক্ষেত্রে, সমস্যার কারণ চিহ্নিত করার একটি ভাল প্রথম পদক্ষেপ হল ত্রুটির কারণ প্রতিক্রিয়ার বিশদ বিবরণ পরীক্ষা করা।

প্রতিক্রিয়া পার্স

ডিফল্টরূপে, যেকোনও প্রতিক্রিয়া যা একটি ত্রুটি (400 বা তার বেশি একটি স্ট্যাটাস কোড ) প্রদান করে তা Google Ads স্ক্রিপ্ট ইঞ্জিন দ্বারা নিক্ষেপ করা হবে।

এই আচরণ প্রতিরোধ করতে, এবং ত্রুটি এবং ত্রুটি বার্তা পরিদর্শন করার অনুমতি দিতে, ঐচ্ছিক প্যারামিটারের muteHttpExceptions বৈশিষ্ট্য UrlFetchApp.fetch এ সেট করুন। উদাহরণ স্বরূপ:

const params = {
  muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, params);
if (response.getResponseCode() >= 400) {
  // ... inspect error details...
}

সাধারণ স্ট্যাটাস কোড

  • 200 OK সাফল্য নির্দেশ করে। যদি প্রতিক্রিয়াতে প্রত্যাশিত ডেটা না থাকে, তাহলে বিবেচনা করুন:

    • কিছু API কোন ক্ষেত্র এবং/অথবা প্রতিক্রিয়া বিন্যাস ব্যবহার করতে হবে তার স্পেসিফিকেশনের অনুমতি দেয়। এ সম্পর্কে বিস্তারিত জানার জন্য API ডকুমেন্টেশন দেখুন।
    • একটি এপিআই একাধিক সংস্থান থাকতে পারে যা কল করা যেতে পারে। একটি ভিন্ন সংস্থান ব্যবহার করার জন্য আরও উপযুক্ত হতে পারে কিনা তা নির্ধারণ করতে ডকুমেন্টেশনের সাথে পরামর্শ করুন এবং আপনার প্রয়োজনীয় ডেটা ফিরিয়ে দেবে।
    • কোড লেখার পর থেকে API পরিবর্তিত হতে পারে। ব্যাখ্যার জন্য ডকুমেন্টেশন বা বিকাশকারীর সাথে পরামর্শ করুন।
  • 400 Bad Request মানে সাধারণত সার্ভারে পাঠানো রিকোয়েস্টের ফরম্যাটিং বা স্ট্রাকচারে কিছু সঠিক নয়। অনুরোধটি পরিদর্শন করুন এবং এটি প্রত্যাশার সাথে সামঞ্জস্যপূর্ণ তা নিশ্চিত করতে API স্পেসিফিকেশনের সাথে তুলনা করুন। অনুরোধগুলি কীভাবে পরীক্ষা করতে হয় তার বিশদ বিবরণের জন্য অনুরোধগুলি পরিদর্শন দেখুন।

  • 401 Unauthorized মানে সাধারণত অনুমোদন প্রদান বা সফলভাবে সম্পাদন না করে API কল করা হচ্ছে।

    • যদি API মৌলিক অনুমোদন ব্যবহার করে, তাহলে নিশ্চিত করুন যে Authorization শিরোনামটি তৈরি করা হচ্ছে এবং অনুরোধে সরবরাহ করা হচ্ছে।
    • API যদি OAuth 2.0 ব্যবহার করে, নিশ্চিত করুন অ্যাক্সেস টোকেনটি প্রাপ্ত হয়েছে এবং একটি Bearer টোকেন হিসাবে সরবরাহ করা হচ্ছে।
    • অনুমোদনের অন্য কোনো পরিবর্তনের জন্য, নিশ্চিত করুন যে অনুরোধের জন্য প্রয়োজনীয় শংসাপত্র সরবরাহ করা হচ্ছে।
  • 403 Forbidden নির্দেশ করে যে ব্যবহারকারীর কাছে অনুরোধ করা সংস্থানটির জন্য অনুমতি নেই।

    • ব্যবহারকারীকে প্রয়োজনীয় অনুমতি দেওয়া হয়েছে তা নিশ্চিত করুন, উদাহরণস্বরূপ, একটি ফাইল-ভিত্তিক অনুরোধে ব্যবহারকারীকে একটি ফাইলে অ্যাক্সেস দেওয়া।
  • 404 Not Found মানে অনুরোধ করা সম্পদ বিদ্যমান নেই।

    • API এন্ডপয়েন্টের জন্য ব্যবহৃত URLটি সঠিক কিনা তা পরীক্ষা করুন।
    • যদি একটি সংস্থান আনা হয়, তাহলে দেখুন যে সংস্থানটি উল্লেখ করা হচ্ছে তা বিদ্যমান আছে (উদাহরণস্বরূপ, যদি ফাইলটি একটি ফাইল-ভিত্তিক API-এর জন্য বিদ্যমান থাকে)।

অনুরোধগুলি পরিদর্শন করুন

যখন API প্রতিক্রিয়াগুলি নির্দেশ করে যে অনুরোধটি খারাপভাবে গঠিত হয়েছে, উদাহরণস্বরূপ, একটি 400 স্ট্যাটাস কোড তখন অনুরোধগুলি পরিদর্শন করা কার্যকর। অনুরোধগুলি পরীক্ষা করতে সাহায্য করার জন্য, UrlFetchApp fetch() পদ্ধতির একটি সহচর পদ্ধতি রয়েছে, যাকে getRequest() বলা হয়

সার্ভারে একটি অনুরোধ পাঠানোর পরিবর্তে, এই পদ্ধতিটি অনুরোধটি তৈরি করে যা পাঠানো হবে এবং তারপরে এটি ফেরত দেয়। অনুরোধটি সঠিক দেখাচ্ছে তা নিশ্চিত করতে এটি ব্যবহারকারীকে অনুরোধের উপাদানগুলি পরিদর্শন করতে দেয়৷

উদাহরণ স্বরূপ, যদি আপনার অনুরোধের ফর্ম ডেটাতে অনেকগুলি স্ট্রিং একসাথে সংযুক্ত থাকে, তাহলে সেই ফর্ম ডেটা তৈরি করার জন্য আপনি যে ফাংশনটি তৈরি করেছেন তাতে ত্রুটিটি থাকতে পারে৷ এর সবচেয়ে সহজে:

const request = UrlFetchApp.getRequest(url, params);
console.log(request);
// Now make the fetch:
const response = UrlFetchApp.fetch(url, params);
// ...

আপনাকে অনুরোধের উপাদানগুলি পরিদর্শন করার অনুমতি দেবে।

লগ অনুরোধ এবং প্রতিক্রিয়া

একটি তৃতীয় পক্ষের API-এর অনুরোধ এবং প্রতিক্রিয়াগুলি পরিদর্শনের সম্পূর্ণ প্রক্রিয়াতে সহায়তা করার জন্য, নিম্নলিখিত সহায়ক ফাংশনটি অনুরোধ এবং প্রতিক্রিয়া উভয়ই লগ করার জন্য UrlFetchApp.fetch() এর ড্রপ-ইন প্রতিস্থাপন হিসাবে ব্যবহার করা যেতে পারে৷

  1. আপনার কোডে UrlFetchApp.fetch() এর সমস্ত উদাহরণ logUrlFetch() দিয়ে প্রতিস্থাপন করুন।

  2. আপনার স্ক্রিপ্টের শেষে নিম্নলিখিত ফাংশন যোগ করুন।

    function logUrlFetch(url, opt_params) {
      const params = opt_params || {};
      params.muteHttpExceptions = true;
      const request = UrlFetchApp.getRequest(url, params);
      console.log('Request:       >>> ' + JSON.stringify(request));
      const response = UrlFetchApp.fetch(url, params);
      console.log('Response Code: <<< ' + response.getResponseCode());
      console.log('Response text: <<< ' + response.getContentText());
      if (response.getResponseCode() >= 400) {
        throw Error('Error in response: ' + response);
      }
      return response;
    }
    

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