ইনস্টলযোগ্য ট্রিগার

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

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

বিধিনিষেধ

যদিও ইনস্টলযোগ্য ট্রিগারগুলো সাধারণ ট্রিগারের চেয়ে বেশি নমনীয়তা প্রদান করে, তবুও সেগুলো বেশ কিছু সীমাবদ্ধতার অধীন:

  • কোনো ফাইল রিড-অনলি (ভিউ বা কমেন্ট) মোডে খোলা হলে এগুলি চলে না। স্বতন্ত্র স্ক্রিপ্টের ক্ষেত্রে, ট্রিগারগুলি সঠিকভাবে চলার জন্য ব্যবহারকারীদের স্ক্রিপ্ট ফাইলটিতে অন্তত ভিউ অ্যাক্সেস থাকা প্রয়োজন।
  • স্ক্রিপ্ট এক্সিকিউশন এবং এপিআই রিকোয়েস্টের কারণে ট্রিগার রান হয় না। উদাহরণস্বরূপ, একটি নতুন ফর্ম রেসপন্স সাবমিট করার জন্য FormResponse.submit() কল করলে ফর্মের সাবমিট ট্রিগারটি রান হয় না।

    এই সীমাবদ্ধতার একটি ব্যতিক্রম হলো Form.submitGrades() । যদি আপনার কোডে onFormSubmit ট্রিগার ব্যবহার করা হয়, তাহলে Form.submitGrades() কল করলে onFormSubmit কন্ডিশনটি ট্রিগার হয় এবং একটি ইনফিনিট লুপ তৈরি হয়। এই ইনফিনিট লুপ প্রতিরোধ করতে, submitGrades() কল করার আগে গ্রেড আগে থেকে আছে কিনা তা পরীক্ষা করার জন্য কোড যোগ করুন।

  • ইনস্টলেবল ট্রিগার সবসময় যিনি এটি তৈরি করেছেন তার অ্যাকাউন্টের অধীনে চলে। উদাহরণস্বরূপ, আপনি যদি একটি ইনস্টলেবল ওপেন ট্রিগার তৈরি করেন, তাহলে আপনার সহকর্মী যখন ডকুমেন্টটি খোলেন (যদি তার সম্পাদনার অ্যাক্সেস থাকে), তখন এটি চলে, কিন্তু এটি আপনার অ্যাকাউন্ট থেকেই চলে। এর মানে হলো, আপনি যদি কোনো ডকুমেন্ট খোলার সময় ইমেল পাঠানোর জন্য একটি ট্রিগার তৈরি করেন, তাহলে ইমেলটি সবসময় আপনার অ্যাকাউন্ট থেকেই পাঠানো হবে, অগত্যা সেই অ্যাকাউন্ট থেকে নয় যেটি ডকুমেন্টটি খুলেছে। তবে, আপনি প্রতিটি অ্যাকাউন্টের জন্য একটি করে ইনস্টলেবল ট্রিগার তৈরি করতে পারেন, যার ফলে প্রতিটি অ্যাকাউন্ট থেকে একটি করে ইমেল পাঠানো হয়।

  • একটি নির্দিষ্ট অ্যাকাউন্ট দ্বিতীয় কোনো অ্যাকাউন্ট থেকে ইনস্টল করা ট্রিগার দেখতে পারে না, যদিও প্রথম অ্যাকাউন্টটি সেই ট্রিগারগুলো সক্রিয় করতে পারে।

  • ইনস্টলযোগ্য ট্রিগারগুলো অ্যাপস স্ক্রিপ্ট ট্রিগার কোটার সীমার অধীন।

সময়-চালিত ট্রিগার

একটি টাইম-ড্রাইভেন ট্রিগার (যাকে ক্লক ট্রিগারও বলা হয়) ইউনিক্স-এর ক্রন জবের মতো। টাইম-ড্রাইভেন ট্রিগার স্ক্রিপ্টগুলোকে একটি নির্দিষ্ট সময়ে বা একটি পুনরাবৃত্ত বিরতিতে কার্যকর হতে দেয়, যা প্রতি মিনিটে একবারের মতো ঘন ঘন বা মাসে একবারের মতো কম সময়েও হতে পারে। (একটি অ্যাড-অন সর্বোচ্চ প্রতি ঘণ্টায় একবার টাইম-ড্রাইভেন ট্রিগার ব্যবহার করতে পারে।) সময়টি কিছুটা র‍্যান্ডমাইজড হতে পারে—উদাহরণস্বরূপ, যদি আপনি সকাল ৯টার একটি পুনরাবৃত্ত ট্রিগার তৈরি করেন, তাহলে অ্যাপস স্ক্রিপ্ট সকাল ৯টা থেকে ১০টার মধ্যে একটি সময় বেছে নেয়, এবং তারপর সেই সময়টিকে প্রতিদিন একই রাখে, যাতে ট্রিগারটি আবার চালু হওয়ার আগে ২৪ ঘণ্টা অতিবাহিত হয়।

ইভেন্ট-চালিত ট্রিগার

ইনস্টলযোগ্য ইভেন্ট-চালিত ট্রিগারগুলো ধারণাগতভাবে onOpen() এর মতো সাধারণ ট্রিগারের অনুরূপ, কিন্তু এগুলো অতিরিক্ত ইভেন্টেও সাড়া দিতে পারে এবং এদের আচরণও ভিন্ন।

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

গুগল ওয়ার্কস্পেস অ্যাপ্লিকেশনগুলির জন্য বেশ কয়েকটি ইনস্টলযোগ্য ট্রিগার রয়েছে:

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

ইনস্টলযোগ্য ট্রিগারগুলো স্বতন্ত্র এবং সংযুক্ত স্ক্রিপ্ট উভয় ক্ষেত্রেই উপলব্ধ। উদাহরণস্বরূপ, একটি স্বতন্ত্র স্ক্রিপ্ট TriggerBuilder.forSpreadsheet(key) কল করে এবং স্প্রেডশীটের আইডি পাস করার মাধ্যমে যেকোনো গুগল শীটস ফাইলের জন্য প্রোগ্রাম্যাটিকভাবে একটি ইনস্টলযোগ্য ট্রিগার তৈরি করতে পারে।

ট্রিগারগুলি ম্যানুয়ালি পরিচালনা করুন

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

  1. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টটি খুলুন।
  2. বাম দিকে, ‘ট্রিগারস ক্লিক করুন।
  3. নিচের ডানদিকে, 'Add Trigger'- এ ক্লিক করুন।
  4. আপনি যে ধরনের ট্রিগার তৈরি করতে চান, তা নির্বাচন ও কনফিগার করুন।
  5. সংরক্ষণ করুন- এ ক্লিক করুন।

প্রোগ্রাম্যাটিকভাবে ট্রিগার পরিচালনা করুন

Script সার্ভিস ব্যবহার করে প্রোগ্রাম্যাটিকভাবে ট্রিগার তৈরি ও মুছে ফেলুন। প্রথমে ScriptApp.newTrigger(functionName) কল করুন, যা একটি TriggerBuilder রিটার্ন করে।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে দুটি সময়-ভিত্তিক ট্রিগার তৈরি করতে হয়—একটি যা প্রতি ৬ ঘন্টা পর পর চালু হয়, এবং অন্যটি যা প্রতি সোমবার সকাল ৯টায় চালু হয় (আপনার স্ক্রিপ্টে সেট করা টাইম জোন অনুযায়ী)।

/**
 * Creates two time-driven triggers.
 * @see https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers
 */
function createTimeDrivenTriggers() {
  // Trigger every 6 hours.
  ScriptApp.newTrigger("myFunction").timeBased().everyHours(6).create();
  // Trigger every Monday at 09:00.
  ScriptApp.newTrigger("myFunction")
    .timeBased()
    .onWeekDay(ScriptApp.WeekDay.MONDAY)
    .atHour(9)
    .create();
}

পরবর্তী উদাহরণটিতে দেখানো হয়েছে কিভাবে একটি স্প্রেডশীটের জন্য একটি ইনস্টলযোগ্য ওপেন ট্রিগার তৈরি করতে হয়। একটি সাধারণ onOpen() ট্রিগারের মতো নয়, ইনস্টলযোগ্য ট্রিগারের স্ক্রিপ্টটিকে স্প্রেডশীটের সাথে আবদ্ধ করার প্রয়োজন হয় না। একটি স্বতন্ত্র স্ক্রিপ্ট থেকে এই ট্রিগারটি তৈরি করতে, SpreadsheetApp.getActive() এর পরিবর্তে SpreadsheetApp.openById(id) কলটি ব্যবহার করুন।

/**
 * Creates a trigger for when a spreadsheet opens.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function createSpreadsheetOpenTrigger() {
  const ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("myFunction").forSpreadsheet(ss).onOpen().create();
}

প্রোগ্রামের মাধ্যমে বিদ্যমান কোনো ইনস্টলযোগ্য ট্রিগার পরিবর্তন করতে হলে, আপনাকে সেটি ডিলিট করে একটি নতুন ট্রিগার তৈরি করতে হবে। যদি আপনি আগে কোনো ট্রিগারের আইডি সংরক্ষণ করে থাকেন, তবে নিম্নলিখিত ফাংশনে আর্গুমেন্ট হিসেবে আইডিটি পাস করে সেটি ডিলিট করুন।

/**
 * Deletes a trigger.
 * @param {string} triggerId The Trigger ID.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function deleteTrigger(triggerId) {
  // Loop over all triggers.
  const allTriggers = ScriptApp.getProjectTriggers();
  for (let index = 0; index < allTriggers.length; index++) {
    // If the current trigger is the correct one, delete it.
    if (allTriggers[index].getUniqueId() === triggerId) {
      ScriptApp.deleteTrigger(allTriggers[index]);
      break;
    }
  }
}

ট্রিগার তৈরি করার আগে, যাচাই করে নিন যে সংশ্লিষ্ট ফাংশনটির সমস্ত প্রয়োজনীয় OAuth অনুমতি রয়েছে।

ট্রিগারে ত্রুটি

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

এর পরিবর্তে, অ্যাপস স্ক্রিপ্ট নিম্নলিখিতের মতো একটি ইমেল পাঠায়:

From: noreply-apps-scripts-notifications@google.com
Subject: Summary of failures for Apps Script
Your script has recently failed to finish successfully.
A summary of the failure(s) is shown below.

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

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

অ্যাড-অন দ্বারা তৈরি ইনস্টলযোগ্য ট্রিগারগুলো ব্যবহারকারীদের এই ইমেল বিজ্ঞপ্তিগুলো পাঠায় না।

আপনার গুগল অ্যাকাউন্টের সাথে যুক্ত সমস্ত ট্রিগার পর্যালোচনা করতে এবং যে ট্রিগারগুলির আর প্রয়োজন নেই সেগুলি নিষ্ক্রিয় করতে, এই ধাপগুলি অনুসরণ করুন:

  1. script.google.com এ যান।
  2. বাম দিকে, 'আমার ট্রিগার' (My Triggers) -এ ক্লিক করুন।
  3. ট্রিগারটি মুছে ফেলার জন্য, ট্রিগারটির ডানদিকে থাকা More > Delete trigger-এ ক্লিক করুন।

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

 Simple triggers like `onOpen()` can't be deactivated from this
 page; instead, edit the appropriate script and remove or rename
 the `onOpen()` function.

অ্যাড-অনগুলিতে ট্রিগার

ইনস্টলযোগ্য ট্রিগারের পাশাপাশি, অ্যাড-অনগুলিতে ম্যানিফেস্ট ট্রিগার ব্যবহার করুন। আরও তথ্যের জন্য, Google Workspace অ্যাড-অনগুলির জন্য ট্রিগার দেখুন।