সরল ট্রিগার

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

Google Workspace অ্যাড-অন প্রজেক্টে ট্রিগার কীভাবে ব্যবহার করতে হয় সে সম্পর্কে তথ্যের জন্য, Google Workspace অ্যাড-অনগুলির জন্য ট্রিগার দেখুন।

শুরু করা হচ্ছে

একটি সিম্পল ট্রিগার ব্যবহার করতে, এমন একটি ফাংশন তৈরি করুন যা এই সংরক্ষিত ফাংশন নামগুলির মধ্যে একটি ব্যবহার করে:

  • যখন কোনো ব্যবহারকারী এমন কোনো স্প্রেডশীট, ডকুমেন্ট, প্রেজেন্টেশন বা ফর্ম খোলেন যা সম্পাদনা করার অনুমতি তার আছে, তখন onOpen(e) চলে।
  • যখন কোনো ব্যবহারকারী Google Docs, Sheets, Slides, বা Forms-এর ভেতর থেকে একটি এডিটর অ্যাড-অন ইনস্টল করেন, তখন onInstall(e) রান করে।
  • যখন কোনো ব্যবহারকারী স্প্রেডশীটে কোনো মান পরিবর্তন করেন, তখন onEdit(e) চলে।
  • যখন কোনো ব্যবহারকারী স্প্রেডশিটে নির্বাচন পরিবর্তন করেন, তখন onSelectionChange(e) চলে।
  • যখন কোনো ব্যবহারকারী একটি ওয়েব অ্যাপ ভিজিট করে অথবা কোনো প্রোগ্রাম একটি ওয়েব অ্যাপে HTTP GET রিকোয়েস্ট পাঠায়, তখন doGet(e) রান করে।
  • যখন কোনো প্রোগ্রাম একটি ওয়েব অ্যাপে HTTP POST অনুরোধ পাঠায়, তখন doPost(e) রান করে।

উপরের ফাংশনের নামগুলিতে থাকা e প্যারামিটারটি হলো একটি ইভেন্ট অবজেক্ট , যা ফাংশনে পাস করা হয়। এই অবজেক্টটিতে সেই প্রেক্ষাপট সম্পর্কিত তথ্য থাকে যার কারণে ট্রিগারটি সক্রিয় হয়েছে, কিন্তু এর ব্যবহার ঐচ্ছিক।

বিধিনিষেধ

যেহেতু সিম্পল ট্রিগারগুলো ব্যবহারকারীর অনুমতি না চেয়েই স্বয়ংক্রিয়ভাবে চালু হয়, তাই এগুলো বেশ কিছু বিধিনিষেধের অধীন:

  • স্ক্রিপ্টটি অবশ্যই একটি গুগল শিটস, স্লাইডস, ডকস বা ফর্মস ফাইলের সাথে সংযুক্ত থাকতে হবে, অথবা এটি এমন একটি অ্যাড-অন হতে হবে যা ঐ অ্যাপ্লিকেশনগুলোর কোনো একটির কার্যকারিতা প্রসারিত করে।
  • ফাইলটি রিড-অনলি (দেখা বা মন্তব্য) মোডে খোলা হলে এগুলো চলে না।
  • স্ক্রিপ্ট এক্সিকিউশন এবং এপিআই রিকোয়েস্টের কারণে ট্রিগার রান হয় না। উদাহরণস্বরূপ, কোনো সেল এডিট করার জন্য Range.setValue() কল করলে স্প্রেডশিটের onEdit ট্রিগারটি রান হয় না।
  • তারা এমন পরিষেবাগুলি অ্যাক্সেস করতে পারে না যেগুলির জন্য অনুমোদনের প্রয়োজন হয়। উদাহরণস্বরূপ, একটি সাধারণ ট্রিগার ইমেল পাঠাতে পারে না কারণ জিমেইল পরিষেবার জন্য অনুমোদনের প্রয়োজন হয়, কিন্তু একটি সাধারণ ট্রিগার ল্যাঙ্গুয়েজ পরিষেবা ব্যবহার করে একটি বাক্যাংশ অনুবাদ করতে পারে, যা বেনামী।
  • তারা যে ফাইলের সাথে আবদ্ধ, সেটি পরিবর্তন করতে পারে, কিন্তু অন্য ফাইল অ্যাক্সেস করতে পারে না, কারণ তার জন্য অনুমোদনের প্রয়োজন হবে।
  • জটিল নিরাপত্তা বিধিনিষেধের ওপর নির্ভর করে তারা বর্তমান ব্যবহারকারীর পরিচয় নির্ণয় করতে সক্ষম হতেও পারে, আবার নাও হতে পারে।
  • তারা ৩০ সেকেন্ডের বেশি দৌড়াতে পারে না।
  • কিছু পরিস্থিতিতে, এডিটর অ্যাড-অনগুলি তাদের onOpen(e) এবং onEdit(e) সিম্পল ট্রিগারগুলিকে একটি নো-অথরাইজেশন মোডে চালায়, যা কিছু অতিরিক্ত জটিলতা তৈরি করে। আরও তথ্যের জন্য, অ্যাড-অন অথরাইজেশন লাইফসাইকেল-এর গাইডটি দেখুন।
  • সাধারণ ট্রিগারগুলো অ্যাপস স্ক্রিপ্ট ট্রিগার কোটার সীমার অধীন।

এই বিধিনিষেধগুলি doGet(e) বা doPost(e) এর ক্ষেত্রে প্রযোজ্য নয়।

onOpen(e)

যখন কোনো ব্যবহারকারী এমন কোনো স্প্রেডশীট, ডকুমেন্ট, প্রেজেন্টেশন বা ফর্ম খোলেন যা সম্পাদনা করার অনুমতি তার আছে, তখন onOpen(e) ট্রিগারটি স্বয়ংক্রিয়ভাবে চলে। (ফর্মের উত্তরে সাড়া দেওয়ার সময় ট্রিগারটি চলে না, শুধুমাত্র সম্পাদনা করার জন্য ফর্মটি খোলার সময় চলে।) Google Sheets, Slides, Docs, বা Forms-এ কাস্টম মেনু আইটেম যোগ করার জন্য onOpen(e) সবচেয়ে বেশি ব্যবহৃত হয়।

/**
 * The event handler triggered when opening the spreadsheet.
 * @param {Event} e The onOpen event.
 * @see https://developers.google.com/apps-script/guides/triggers#onopene
 */
function onOpen(e) {
  // Add a custom menu to the spreadsheet.
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
    .createMenu("Custom Menu")
    .addItem("First item", "menuItem1")
    .addToUi();
}

onInstall(e)

যখন কোনো ব্যবহারকারী Google Docs, Sheets, Slides, বা Forms-এর ভেতর থেকে একটি এডিটর অ্যাড-অন ইনস্টল করেন, তখন onInstall(e) ট্রিগারটি স্বয়ংক্রিয়ভাবে চলে। যখন কোনো ব্যবহারকারী Google Workspace Marketplace ওয়েবসাইট থেকে অ্যাড-অনটি ইনস্টল করেন, তখন এই ট্রিগারটি চলে না। onInstall(e) -এর সবচেয়ে সাধারণ ব্যবহার হলো কাস্টম মেনু যোগ করার জন্য onOpen(e) কল করা। একটি অ্যাড-অন ইনস্টল করার পরে, ফাইলটি ইতিমধ্যেই খোলা থাকে, এবং তাই ফাইলটি পুনরায় না খোলা পর্যন্ত onOpen(e) নিজে থেকে চলে না। মনে রাখবেন যে onInstall(e) কী করতে পারে তার উপর কিছু নির্দিষ্ট সীমাবদ্ধতা রয়েছে। অনুমোদন সম্পর্কে আরও জানুন।

/**
 * The event handler triggered when installing the add-on.
 * @param {Event} e The onInstall event.
 * @see https://developers.google.com/apps-script/guides/triggers#oninstalle
 */
function onInstall(e) {
  onOpen(e);
}

onEdit(e)

যখন কোনো ব্যবহারকারী স্প্রেডশীটের যেকোনো সেলের মান পরিবর্তন করেন, তখন onEdit(e) ট্রিগারটি স্বয়ংক্রিয়ভাবে চলে। বেশিরভাগ onEdit(e) ট্রিগার যথাযথভাবে সাড়া দেওয়ার জন্য ইভেন্ট অবজেক্টের তথ্য ব্যবহার করে। উদাহরণস্বরূপ, নিচের onEdit(e) ফাংশনটি সেলে একটি মন্তব্য সেট করে, যা সেলটি শেষবার কখন সম্পাদনা করা হয়েছিল তা রেকর্ড করে।

/**
 * The event handler triggered when editing the spreadsheet.
 * @param {Event} e The onEdit event.
 * @see https://developers.google.com/apps-script/guides/triggers#onedite
 */
function onEdit(e) {
  // Set a comment on the edited cell to indicate when it was changed.
  const range = e.range;
  range.setNote(`Last modified: ${new Date()}`);
}

onEdit() ট্রিগারটি সর্বোচ্চ ২টি ট্রিগার ইভেন্টকে সারিবদ্ধ করে।

onSelectionChange(e)

যখন কোনো ব্যবহারকারী একটি স্প্রেডশীটে নির্বাচন পরিবর্তন করেন, তখন onSelectionChange(e) ট্রিগারটি স্বয়ংক্রিয়ভাবে চলে। এই ট্রিগারটি সক্রিয় করতে, ট্রিগারটি যোগ করার পর একবার এবং প্রতিবার স্প্রেডশীটটি খোলার সময় রিফ্রেশ করুন।

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

নিচের উদাহরণে, যদি একটি খালি সেল নির্বাচন করা হয়, তাহলে onSelectionChange(e) ফাংশনটি সেলটির ব্যাকগ্রাউন্ড লাল রঙে সেট করে।

/**
 * The event handler triggered when the selection changes in the spreadsheet.
 * @param {Event} e The onSelectionChange event.
 * @see https://developers.google.com/apps-script/guides/triggers#onselectionchangee
 */
function onSelectionChange(e) {
  // Set background to red if a single empty cell is selected.
  const range = e.range;
  if (
    range.getNumRows() === 1 &&
    range.getNumColumns() === 1 &&
    range.getCell(1, 1).getValue() === ""
  ) {
    range.setBackground("red");
  }
}

doGet(e) এবং doPost(e)

যখন কোনো ব্যবহারকারী একটি ওয়েব অ্যাপ ভিজিট করেন অথবা কোনো প্রোগ্রাম একটি ওয়েব অ্যাপে HTTP GET রিকোয়েস্ট পাঠায়, তখন doGet(e) ট্রিগারটি স্বয়ংক্রিয়ভাবে চলে। যখন কোনো প্রোগ্রাম একটি ওয়েব অ্যাপে HTTP POST রিকোয়েস্ট পাঠায়, তখন doPost(e) চলে। এই ট্রিগারগুলো ওয়েব অ্যাপ , HTML সার্ভিস এবং কন্টেন্ট সার্ভিস- এর গাইডগুলোতে আরও বিস্তারিতভাবে দেখানো হয়েছে। উল্লেখ্য যে, doGet(e) এবং doPost(e) উপরে তালিকাভুক্ত বিধিনিষেধগুলোর অধীন নয়।

উপলব্ধ ট্রিগারের প্রকারভেদ

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

অনুষ্ঠান সাধারণ ট্রিগার ইনস্টলযোগ্য ট্রিগার
খোলা
শীট
স্লাইড
ফর্ম*
ডাক্তাররা

function onOpen(e)

শীট
ফর্ম*
ডাক্তাররা
সম্পাদনা
শীট

function onEdit(e)

শীট
নির্বাচন পরিবর্তন
শীট

function onSelectionChange(e)

ইনস্টল করুন
শীট
স্লাইড
ফর্ম
ডাক্তাররা

function onInstall(e)

পরিবর্তন
শীট
ফর্ম জমা দিন
শীট
ফর্ম
সময়-চালিত (ঘড়ি)
শীট
স্লাইড
ফর্ম
ডাক্তাররা
স্বতন্ত্র
পান
স্বতন্ত্র

function doGet(e)

পোস্ট
স্বতন্ত্র

function doPost(e)

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