বিষয়বস্তু পরিষেবা

যখন একটি স্ক্রিপ্ট একটি ওয়েব অ্যাপ হিসাবে প্রকাশিত হয়, যখনই স্ক্রিপ্টের URL-এ একটি অনুরোধ করা হয় তখন বিশেষ কলব্যাক ফাংশন doGet() এবং doPost() আহ্বান করা হয়। এইচটিএমএল পরিষেবা দিয়ে তৈরি একটি ইউজার ইন্টারফেস অবজেক্ট ফেরত দেওয়ার পরিবর্তে, কন্টেন্ট পরিষেবাটি কাঁচা পাঠ্য বিষয়বস্তু ফেরত দিতে ব্যবহার করা যেতে পারে। এটি আপনাকে স্ক্রিপ্ট লিখতে দেয় যা "পরিষেবা" হিসাবে কাজ করে, GET এবং POST অনুরোধে সাড়া দেয় এবং বিভিন্ন MIME প্রকারের ডেটা পরিবেশন করে।

অধিকার

এখানে বিষয়বস্তু পরিষেবার একটি সহজ উদাহরণ:

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

স্ক্রিপ্টটিকে একটি ওয়েব অ্যাপ হিসাবে স্থাপন করুন , আপনি যদি একটি ব্যবহারকারী ইন্টারফেস পরিবেশন করেন তবে একই পদক্ষেপগুলি ব্যবহার করে৷ যখন স্ক্রিপ্টের URL-এ একটি GET অনুরোধ করা হয়, তখন Hello, world! ফেরত দেওয়া হবে। প্লেইন টেক্সট ছাড়াও, পরিষেবাটি ATOM, CSV, iCal, JavaScript, JSON, RSS, vCard এবং XML বিষয়বস্তু ফেরত সমর্থন করে।

RSS ফিড পরিবেশন করা হচ্ছে

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

ধরা যাক আমরা ফিডটি সম্পাদনা করতে চেয়েছিলাম যাতে অতিরিক্ত পাঞ্চলাইনটি সরাসরি ফিডে থাকে এবং ঘোরানোর পরিবর্তে আপনি এটি দেখতে কিছুটা নিচে স্ক্রোল করেন। এটি একটি মোবাইল ডিভাইসে ভাল কাজ করবে। এখানে কোড আছে:

function doGet() {
  var feed =  UrlFetchApp.fetch('http://xkcd.com/rss.xml').getContentText();
  feed = feed.replace(
    /(<img.*?alt="(.*?)".*?>)/g,
    '$1' + new Array(10).join('<br />') + '$2');
  return ContentService.createTextOutput(feed)
    .setMimeType(ContentService.MimeType.RSS);
}

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

এটিকে কার্যকরভাবে দেখতে, স্ক্রিপ্টটিকে একটি ওয়েব অ্যাপ হিসাবে প্রকাশ করুন, বেনামী অ্যাক্সেসের অনুমতি দেওয়ার বিষয়টি নিশ্চিত করুন (যেহেতু আপনার আরএসএস পাঠক বেনামী ব্যবহারকারী হিসাবে এটি পরিদর্শন করবেন)। তারপর আপনার আরএসএস রিডারে পরিষেবাটির URL যোগ করুন (মূল RSS ফিড নয়) অথবা শুধুমাত্র একটি ওয়েব ব্রাউজারে সরাসরি দেখুন৷ এটাই!

স্ক্রিপ্ট থেকে JSON পরিবেশন করা

কন্টেন্ট সার্ভিস দিয়ে আমরা আর কি করতে পারি? অন্যান্য স্ক্রিপ্ট বা অন্যান্য ওয়েবসাইট এবং পরিষেবাগুলিতে JSON-কে পরিবেশন করার বিষয়ে কীভাবে! এখানে একটি সাধারণ স্ক্রিপ্ট রয়েছে যা একটি পরিষেবা প্রয়োগ করে যা যে কেউ একটি নির্দিষ্ট সময়ে একটি ক্যালেন্ডার স্লট খোলা আছে কিনা তা দেখতে ব্যবহার করতে পারে৷

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}

আগের মতই, এটিকে কাজ করতে একটি বেনামী ওয়েব অ্যাপ হিসেবে প্রকাশ করুন। এই ক্ষেত্রে, আপনার নতুন পরিষেবার ব্যবহারকারীরা পরিষেবা URL-এর শেষে URL প্যারামিটার যোগ করে এটি ব্যবহার করতে পারেন। start এবং end পরামিতিগুলি পরীক্ষা করার জন্য একটি সময়সীমা দেয়, যা স্ট্যান্ডার্ড ইউনিক্স যুগে নির্দিষ্ট করা হয়েছে।

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

পরিষেবাটি JSON ফেরত দেবে যা রিপোর্ট করবে যে আপনার ক্যালেন্ডারে সেই পরিসরে কিছু আছে কিনা।

{"available":true}

ওয়েব পৃষ্ঠাগুলিতে JSONP পরিবেশন করা হচ্ছে

সামান্য পরিবর্তনের সাথে, আপনার JSON পরিষেবা JSONP হয়ে যেতে পারে, যার মানে হল এটি একটি ব্রাউজারে JavaScript থেকে কল করা যেতে পারে। এখানে নতুন স্ক্রিপ্ট আছে:

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(
    request.parameters.prefix + '(' + JSON.stringify(result) + ')')
    .setMimeType(ContentService.MimeType.JAVASCRIPT);
}

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

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

এই উদাহরণটি ব্রাউজারে পরিষেবা আউটপুট সহ একটি বার্তা বাক্স দেখাবে, যেহেতু আমরা ব্রাউজারের অন্তর্নির্মিত alert() ফাংশনটিকে আমাদের উপসর্গ হিসাবে নির্দিষ্ট করি৷ ফিরে আসা জাভাস্ক্রিপ্ট কোড দেখতে এরকম হবে:

alert({"available":true})

পুনঃনির্দেশ

নিরাপত্তার কারণে, বিষয়বস্তু পরিষেবা দ্বারা প্রত্যাবর্তিত বিষয়বস্তু script.google.com থেকে পরিবেশিত হয় না, বরং script.googleusercontent.com এ একটি এককালীন URL-এ পুনঃনির্দেশিত হয়৷ এর মানে হল যে আপনি যদি অন্য অ্যাপ্লিকেশনে ডেটা ফেরত দিতে সামগ্রী পরিষেবা ব্যবহার করেন, তাহলে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে HTTP ক্লায়েন্টটি পুনঃনির্দেশ অনুসরণ করার জন্য কনফিগার করা হয়েছে। উদাহরণস্বরূপ, cURL কমান্ড লাইন ইউটিলিটিতে, পতাকা -L যোগ করুন। এই আচরণ কিভাবে সক্রিয় করতে হয় সে সম্পর্কে আরও তথ্যের জন্য আপনার HTTP ক্লায়েন্টের জন্য ডকুমেন্টেশন পরীক্ষা করুন।