ওয়েব অ্যাপস

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

স্বতন্ত্র স্ক্রিপ্ট এবং গুগল ওয়ার্কস্পেস অ্যাপ্লিকেশনের সাথে যুক্ত স্ক্রিপ্ট উভয়কেই ওয়েব অ্যাপে রূপান্তর করা যেতে পারে, যদি সেগুলো নিম্নলিখিত শর্তগুলো পূরণ করে।

ওয়েব অ্যাপের জন্য প্রয়োজনীয়তা

একটি স্ক্রিপ্টকে ওয়েব অ্যাপ হিসেবে প্রকাশ করা যেতে পারে, যদি তা এই শর্তগুলো পূরণ করে:

অনুরোধের পরামিতি

যখন কোনো ব্যবহারকারী কোনো অ্যাপ ভিজিট করেন অথবা কোনো প্রোগ্রাম অ্যাপটিতে একটি HTTP GET রিকোয়েস্ট পাঠায়, তখন গুগল অ্যাপস স্ক্রিপ্ট doGet ফাংশনটি রান করে। যখন কোনো প্রোগ্রাম অ্যাপটিতে একটি HTTP POST রিকোয়েস্ট পাঠায়, তখন অ্যাপস স্ক্রিপ্ট এর পরিবর্তে doPost রান করে। উভয় ক্ষেত্রেই, ' e আর্গুমেন্টটি একটি ইভেন্ট প্যারামিটারকে নির্দেশ করে, যা যেকোনো রিকোয়েস্ট প্যারামিটার সম্পর্কিত তথ্য ধারণ করতে পারে। ইভেন্ট অবজেক্টের গঠন নিচের টেবিলে দেখানো হলো:

ক্ষেত্র
e.queryString

URL-এর কোয়েরি স্ট্রিং অংশের মান, অথবা কোনো কোয়েরি স্ট্রিং নির্দিষ্ট করা না থাকলে null

name=alice&n=1&n=2
e.parameter

অনুরোধের প্যারামিটারগুলোর সাথে সঙ্গতিপূর্ণ কী/ভ্যালু জোড়ের একটি অবজেক্ট। যেসব প্যারামিটারের একাধিক ভ্যালু থাকে, সেগুলোর ক্ষেত্রে শুধুমাত্র প্রথম ভ্যালুটি ফেরত দেওয়া হয়।

{"name": "alice", "n": "1"}
e.parameters

e.parameter এর অনুরূপ একটি অবজেক্ট, কিন্তু এতে প্রতিটি কী-এর জন্য ভ্যালুগুলোর একটি অ্যারে থাকে।

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

/exec বা /dev পরের URL পাথ। উদাহরণস্বরূপ, যদি URL পাথটি /exec/hello দিয়ে শেষ হয়, তাহলে পাথের তথ্য হবে hello

e.contextPath ব্যবহৃত হয় না, সর্বদা খালি স্ট্রিং।
e.contentLength

POST অনুরোধের ক্ষেত্রে অনুরোধ বডির দৈর্ঘ্য, অথবা GET অনুরোধের ক্ষেত্রে -1

332
e.postData.length

e.contentLength এর সমান

332
e.postData.type

পোস্ট বডির MIME টাইপ

text/csv
e.postData.contents

পোস্ট বডির বিষয়বস্তু টেক্সট

Alice,21
e.postData.name

সর্বদা "postData" মান

postData

নিম্নলিখিত উপায়ে username এবং age মতো প্যারামিটারগুলো একটি URL-এ পাঠান:

https://script.google.com/.../exec?username=jsmith&age=21

প্যারামিটারগুলো এইভাবে প্রদর্শন করুন:

function doGet(e) {
  var params = JSON.stringify(e);
  return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}

পূর্ববর্তী উদাহরণে, doGet নিম্নলিখিত আউটপুট প্রদান করে:

{
  "queryString": "username=jsmith&age=21",
  "parameter": {
    "username": "jsmith",
    "age": "21"
  },
  "contextPath": "",
  "parameters": {
    "username": [
      "jsmith"
    ],
    "age": [
      "21"
    ]
  },
  "contentLength": -1
}

নিম্নলিখিত প্যারামিটার নামগুলি সিস্টেম দ্বারা সংরক্ষিত এবং URL প্যারামিটার বা POST বডিতে ব্যবহার করা উচিত নয়:

  • c
  • sid

এই প্যারামিটারগুলো ব্যবহার করলে "দুঃখিত, আপনার অনুরোধ করা ফাইলটি বিদ্যমান নেই" এই ত্রুটি বার্তাসহ একটি HTTP 405 প্রতিক্রিয়া আসতে পারে। সম্ভব হলে, ভিন্ন প্যারামিটার নাম ব্যবহার করার জন্য আপনার স্ক্রিপ্টটি আপডেট করুন।

একটি স্ক্রিপ্টকে ওয়েব অ্যাপ হিসেবে স্থাপন করুন

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

  1. স্ক্রিপ্ট প্রজেক্টের উপরের ডানদিকে, Deploy > New deployment- এ ক্লিক করুন।
  2. ‘টাইপ নির্বাচন করুন’-এর পাশে, ‘ডিপ্লয়মেন্ট টাইপ সক্ষম করুন’ > ‘ওয়েব অ্যাপ’-এ ক্লিক করুন।
  3. "ডিপ্লয়মেন্ট কনফিগারেশন"-এর অধীনে থাকা ফিল্ডগুলিতে আপনার ওয়েব অ্যাপ সম্পর্কিত তথ্য প্রবেশ করান।
  4. ডিপ্লয়-এ ক্লিক করুন।

যাদের আপনি আপনার অ্যাপটি ব্যবহার করতে দিতে চান, তাদের সাথে ওয়েব অ্যাপের ইউআরএলটি শেয়ার করুন, তবে শর্ত হলো আপনি তাদের অ্যাক্সেস দিয়ে থাকবেন।

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

একটি ওয়েব অ্যাপ ডেপ্লয়মেন্ট পরীক্ষা করুন

আপনার স্ক্রিপ্টটি একটি ওয়েব অ্যাপ হিসেবে পরীক্ষা করতে, নিচের ধাপগুলো অনুসরণ করুন:

  1. স্ক্রিপ্ট প্রজেক্টের উপরের ডানদিকে, Deploy > Test deployments-এ ক্লিক করুন।
  2. ‘টাইপ নির্বাচন করুন’-এর পাশে, ‘ডিপ্লয়মেন্ট টাইপ সক্ষম করুন’ > ‘ওয়েব অ্যাপ’-এ ক্লিক করুন।
  3. ওয়েব অ্যাপ ইউআরএল-এর নিচে থাকা 'কপি' বাটনে ক্লিক করুন।
  4. আপনার ব্রাউজারে URL-টি পেস্ট করুন এবং আপনার ওয়েব অ্যাপটি পরীক্ষা করুন।

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

ওয়েব অ্যাপে গ্র্যানুলার OAuth ফিচার পরীক্ষা করতে, নিশ্চিত করুন যে আপনার প্রজেক্টে আগে থেকেই কোনো অথরাইজেশন নেই। বিদ্যমান যেকোনো অথরাইজেশন বাতিল করতে ScriptApp.invalidateAuth ব্যবহার করুন। যেসব ওয়েব অ্যাপ ইতিমধ্যে ডেপ্লয় করা হয়েছে এবং সক্রিয় ব্যবহারকারীর আইডেন্টিটির অধীনে চলছে, সেগুলোর ক্ষেত্রে ম্যানিফেস্টের executeAs JSON ফিল্ডটি USER_DEPLOYING এ পরিবর্তন করুন।

ডেভেলপার হিসেবে চালানোর জন্য ওয়েব অ্যাপ ডেপ্লয় করার সময়, ScriptApp.getOAuthToken- এর মাধ্যমে প্রাপ্ত OAuth টোকেনগুলি পরিচালনা করার ক্ষেত্রে অত্যন্ত সতর্ক থাকুন। এই টোকেনগুলি অন্যান্য অ্যাপ্লিকেশনকে আপনার ডেটাতে অ্যাক্সেস দিতে পারে — এগুলি কখনই ক্লায়েন্টের কাছে প্রেরণ করবেন না।

অনুমতি

আপনি অ্যাপটি কীভাবে চালাতে চান তার উপর নির্ভর করে একটি ওয়েব অ্যাপের অনুমতিগুলো ভিন্ন হয়:

  • আমার পক্ষ থেকে অ্যাপটি চালান — এক্ষেত্রে, ওয়েব অ্যাপটি যেই অ্যাক্সেস করুক না কেন, স্ক্রিপ্টটি সবসময় আপনার, অর্থাৎ স্ক্রিপ্টটির মালিকের পক্ষ থেকেই চলবে।
  • ওয়েব অ্যাপ ব্যবহারকারী হিসেবে অ্যাপটি চালান — এক্ষেত্রে, স্ক্রিপ্টটি ওয়েব অ্যাপ ব্যবহারকারী সক্রিয় ব্যবহারকারীর পরিচয়ে চলে। এই অনুমতি পদ্ধতির কারণে, ব্যবহারকারী যখন অ্যাক্সেসের অনুমোদন দেন, তখন ওয়েব অ্যাপটি স্ক্রিপ্টের মালিকের ইমেল প্রদর্শন করে।

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

শেয়ার্ড ড্রাইভ ব্যবহার করে ওয়েব অ্যাপে একসাথে কাজ করুন। যখন কোনো শেয়ার্ড ড্রাইভে থাকা ওয়েব অ্যাপ ডেপ্লয় করা হয়, তখন "আপনার নামে চালান" (execute as you) বিকল্পটি বেছে নিলে, অ্যাপটি সেই ব্যবহারকারীর কর্তৃত্বের অধীনে চলে যিনি এটি ডেপ্লয় করেছেন (কারণ এর কোনো স্ক্রিপ্ট মালিক থাকে না)।

আপনার ওয়েব অ্যাপটি গুগল সাইটসে এমবেড করুন {:#embed-web-app}

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

সাইটস-এ একটি ওয়েব অ্যাপ এমবেড করার জন্য, এটিকে প্রথমে ডিপ্লয় করতে হবে। এছাড়াও, ডিপ্লয় ডায়ালগ থেকে ডিপ্লয়েড ইউআরএল-টিও আপনার প্রয়োজন হবে।

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

  1. সাইটস পৃষ্ঠাটি খুলুন যেখানে আপনি ওয়েব অ্যাপটি যোগ করতে চান।
  2. ইনসার্ট > এমবেড ইউআরএল নির্বাচন করুন।
  3. ওয়েব অ্যাপের URL পেস্ট করুন এবং তারপর ADD-এ ক্লিক করুন।

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

ওয়েব অ্যাপস এবং ব্রাউজার ইতিহাস

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

অ্যাপস স্ক্রিপ্ট ব্রাউজার হিস্টোরির সাথে সংযুক্ত ওয়েব অ্যাপ তৈরি করতে সাহায্য করার জন্য দুটি অ্যাসিঙ্ক্রোনাস ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট এপিআই প্রদান করে:

  • google.script.history ব্রাউজার হিস্ট্রির পরিবর্তনে ডাইনামিক প্রতিক্রিয়া জানানোর জন্য বিভিন্ন মেথড প্রদান করে। এর মধ্যে রয়েছে: ব্রাউজার হিস্ট্রিতে স্টেট (আপনার সংজ্ঞায়িত সাধারণ অবজেক্ট) পুশ করা, হিস্ট্রি স্ট্যাকের শীর্ষ স্টেটটি প্রতিস্থাপন করা, এবং হিস্ট্রির পরিবর্তনে সাড়া দেওয়ার জন্য একটি লিসেনার কলব্যাক ফাংশন সেট করা।

  • google.script.url বর্তমান পৃষ্ঠার ইউআরএল প্যারামিটার এবং ইউআরএল ফ্র্যাগমেন্ট (যদি থাকে) পুনরুদ্ধার করার উপায় প্রদান করে।

এই হিস্ট্রি এপিআইগুলো শুধুমাত্র ওয়েব অ্যাপের জন্য উপলব্ধ। এগুলো সাইডবার, ডায়ালগ বা অ্যাড-অনের জন্য সমর্থিত নয়। কোনো সাইটের মধ্যে এমবেড করা ওয়েব অ্যাপে এই কার্যকারিতা ব্যবহার করারও সুপারিশ করা হয় না।