এডিটর অ্যাড-অনগুলির জন্য ট্রিগার, এডিটর অ্যাড-অনগুলির জন্য ট্রিগার, সম্পাদক অ্যাড-অনগুলির জন্য ট্রিগার

অ্যাপস স্ক্রিপ্ট ট্রিগারের ফলে যখনই কোনও নির্দিষ্ট ঘটনা ঘটে তখন একটি নির্দিষ্ট স্ক্রিপ্ট ফাংশন ( ট্রিগার ফাংশন ) কার্যকর হয়। শুধুমাত্র নির্দিষ্ট কিছু ইভেন্ট ট্রিগারগুলিকে সক্রিয় করতে পারে এবং প্রতিটি Google Workspace অ্যাপ্লিকেশন ইভেন্টের একটি ভিন্ন সেট সমর্থন করে।

যখন একটি ট্রিগার জ্বলে, তখন একটি ইভেন্ট অবজেক্ট তৈরি হয়। এই JSON স্ট্রাকচারে ঘটে যাওয়া ইভেন্ট সম্পর্কে বিস্তারিত তথ্য থাকে। ইভেন্ট অবজেক্ট স্ট্রাকচারের তথ্য ট্রিগারের ধরণের উপর ভিত্তি করে ভিন্নভাবে সাজানো হয়।

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

এই পৃষ্ঠাটি এডিটর অ্যাড-অন প্রকল্পগুলিতে ট্রিগার ব্যবহারের নির্দেশিকা প্রদান করে।

সম্পাদক অ্যাড-অন ট্রিগারের ধরণ

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

নিম্নলিখিত টেবিলে এডিটর অ্যাড-অনগুলি ব্যবহার করতে পারে এমন সহজ এবং ইনস্টলযোগ্য ট্রিগারগুলির ধরণগুলি দেখানো হয়েছে এবং সংশ্লিষ্ট ইভেন্ট অবজেক্টগুলির লিঙ্ক প্রদান করা হয়েছে:

ইভেন্ট ইভেন্ট অবজেক্ট সহজ ট্রিগার ইনস্টলযোগ্য ট্রিগার
খোলা
একটি এডিটর ফাইল খোলা হয়েছে।
ডক্স অনওপেন ইভেন্ট অবজেক্ট
ফর্ম অনওপেন ইভেন্ট অবজেক্ট
ইভেন্ট অবজেক্টের উপর পত্রক খুলুন
ইভেন্ট অবজেক্ট খুলুন -এ স্লাইড
ডক্স
ফর্ম*
শীট
স্লাইড

function onOpen(e)

ডক্স
ফর্ম
শীট
ইনস্টল করুন
অ্যাড-অনটি ইনস্টল করা হয়েছে।
onInstall ইভেন্ট অবজেক্ট ডক্স
ফর্ম
শীট
স্লাইড

function onInstall(e)

সম্পাদনা
স্প্রেডশিট ঘরের বিষয়বস্তু পরিবর্তন করা হয়েছে।
ইভেন্ট অবজেক্টে সম্পাদনা করুন পত্রক শীট

function onEdit(e)

শীট
পরিবর্তন
একটি শীটের বিষয়বস্তু সম্পাদনা বা ফর্ম্যাট করা হয়।
শীট অনচেঞ্জ ইভেন্ট অবজেক্ট শীট
ফর্ম জমা দিন
একটি গুগল ফর্ম জমা দেওয়া হয়েছে।
ফর্ম ফর্ম-জমা ইভেন্ট অবজেক্ট
শীট ফর্ম-জমা ইভেন্ট অবজেক্ট
ফর্ম
শীট
সময়-চালিত (ঘড়ি)
ট্রিগারটি একটি নির্দিষ্ট সময় বা বিরতিতে জ্বলে।
সময়-চালিত ইভেন্ট অবজেক্ট ডক্স
ফর্ম
শীট
স্লাইড

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

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

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

আপনি নিম্নলিখিত সংরক্ষিত নামগুলির মধ্যে একটি সহ একটি ফাংশন বাস্তবায়ন করে একটি অ্যাড-অনে একটি সাধারণ ট্রিগার যোগ করতে পারেন:

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

বিধিনিষেধ

অ্যাড-অনগুলিতে সরল ট্রিগারগুলি অন্যান্য ধরণের অ্যাপস স্ক্রিপ্ট প্রকল্পগুলিতে সরল ট্রিগারগুলিকে নিয়ন্ত্রণ করে এমন একই বিধিনিষেধের অধীন। অ্যাড-অন ডিজাইন করার সময় এই বিধিনিষেধগুলি বিশেষভাবে লক্ষ্য করুন:

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

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

অ্যাড-অনগুলি অ্যাপস স্ক্রিপ্ট Script পরিষেবার সাহায্যে প্রোগ্রাম্যাটিকভাবে ইনস্টলযোগ্য ট্রিগার তৈরি এবং সংশোধন করতে পারে। অ্যাড-অন ইনস্টলযোগ্য ট্রিগারগুলি ম্যানুয়ালি তৈরি করা যায় না। সাধারণ ট্রিগারগুলির বিপরীতে, ইনস্টলযোগ্য ট্রিগারগুলি এমন পরিষেবাগুলি ব্যবহার করতে পারে যার অনুমোদনের প্রয়োজন হয়।

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

অ্যাড-অনগুলি নিম্নলিখিত ইনস্টলযোগ্য ট্রিগারগুলি ব্যবহার করতে পারে:

  • যখন কোনও ব্যবহারকারী কোনও ডকুমেন্ট, স্প্রেডশিট খোলেন, অথবা যখন কোনও ফর্ম এডিটরে খোলা হয় (কিন্তু ফর্মের প্রতিক্রিয়া জানালে নয়) তখন ওপেন ইনস্টলেবল ট্রিগারগুলি কার্যকর হয়।
  • যখন কোনও ব্যবহারকারী স্প্রেডশিটে কোনও সেল মান পরিবর্তন করে তখন ইনস্টলযোগ্য ট্রিগারগুলি সম্পাদনা করা হয়। এই ট্রিগারটি ফর্ম্যাটিং বা অন্যান্য পরিবর্তনের প্রতিক্রিয়ায় কার্যকর হয় না যা সেল মান পরিবর্তন করে না।
  • যখন কোনও ব্যবহারকারী স্প্রেডশিটে কোনও পরিবর্তন করে, তখন ইনস্টলযোগ্য পরিবর্তন ট্রিগারগুলি কার্যকর করা হয়, যার মধ্যে ফর্ম্যাটিং সম্পাদনা এবং স্প্রেডশিটে পরিবর্তন (যেমন একটি সারি যোগ করা) অন্তর্ভুক্ত।
  • যখন কোনও Google ফর্ম প্রতিক্রিয়া জমা দেওয়া হয় তখন ফর্ম-জমা দেওয়া ইনস্টলযোগ্য ট্রিগারগুলি কার্যকর হয়।

  • সময়-চালিত ট্রিগার (যাকে ঘড়ির ট্রিগারও বলা হয়) একটি নির্দিষ্ট সময়ে অথবা নিয়মিত সময়ের ব্যবধানে বারবার সক্রিয় থাকে।

ইনস্টলযোগ্য ট্রিগার অনুমোদন করা

সাধারণত, যদি কোনও ডেভেলপার অতিরিক্ত অনুমোদনের প্রয়োজন হয় এমন নতুন পরিষেবা ব্যবহার করার জন্য একটি অ্যাড-অন আপডেট করে, তাহলে ব্যবহারকারীরা পরের বার এটি ব্যবহার করার সময় অ্যাড-অনটি পুনরায় অনুমোদন করতে অনুরোধ করা হয়।

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

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

অনুমোদনের ঝামেলা এড়াতে ট্রিগার ফাংশনে ব্যবহারের জন্য প্রস্তাবিত কাঠামোর একটি উদাহরণ নিচে দেওয়া হল। উদাহরণ ট্রিগার ফাংশনটি একটি Google Sheets অ্যাড-অনের মধ্যে একটি ফর্ম-জমা ইভেন্টে সাড়া দেয় এবং যদি পুনরায় অনুমোদনের প্রয়োজন হয়, তাহলে টেমপ্লেট করা HTML ব্যবহার করে অ্যাড-অনের ব্যবহারকারীকে একটি সতর্কতা ইমেল পাঠায়।

কোড.জিএস

ট্রিগার/ফর্ম/কোড.জিএস
/**
 * Responds to a form when submitted.
 * @param {event} e The Form submit event.
 */
function respondToFormSubmit(e) {
  const addonTitle = "My Add-on Title";
  const props = PropertiesService.getDocumentProperties();
  const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);

  // Check if the actions of the trigger requires authorization that has not
  // been granted yet; if so, warn the user via email. This check is required
  // when using triggers with add-ons to maintain functional triggers.
  if (
    authInfo.getAuthorizationStatus() === ScriptApp.AuthorizationStatus.REQUIRED
  ) {
    // Re-authorization is required. In this case, the user needs to be alerted
    // that they need to re-authorize; the normal trigger action is not
    // conducted, since it requires authorization first. Send at most one
    // "Authorization Required" email per day to avoid spamming users.
    const lastAuthEmailDate = props.getProperty("lastAuthEmailDate");
    const today = new Date().toDateString();
    if (lastAuthEmailDate !== today) {
      if (MailApp.getRemainingDailyQuota() > 0) {
        const html = HtmlService.createTemplateFromFile("AuthorizationEmail");
        html.url = authInfo.getAuthorizationUrl();
        html.addonTitle = addonTitle;
        const message = html.evaluate();
        MailApp.sendEmail(
          Session.getEffectiveUser().getEmail(),
          "Authorization Required",
          message.getContent(),
          {
            name: addonTitle,
            htmlBody: message.getContent(),
          },
        );
      }
      props.setProperty("lastAuthEmailDate", today);
    }
  } else {
    // Authorization has been granted, so continue to respond to the trigger.
    // Main trigger logic here.
  }
}

অনুমোদনইমেল.html

ট্রিগার/ফর্ম/অনুমোদনইমেল.html
<p>The Google Sheets add-on <i><?= addonTitle ?></i> is set to run automatically
    whenever a form is submitted. The add-on was recently updated and it needs you
    to re-authorize it to run on your behalf.</p>

<p>The add-on's automatic functions are temporarily disabled until you
    re-authorize it. To do so, open Google Sheets and run the add-on from the
    Add-ons menu. Alternatively, you can click this link to authorize it:</p>

<p><a href="<?= url ?>">Re-authorize the add-on.</a></p>

<p>This notification email will be sent to you at most once per day until the
    add-on is re-authorized.</p>

বিধিনিষেধ

অ্যাড-অনগুলিতে ইনস্টলযোগ্য ট্রিগারগুলি অন্যান্য ধরণের অ্যাপস স্ক্রিপ্ট প্রকল্পগুলিতে ইনস্টলযোগ্য ট্রিগারগুলিকে নিয়ন্ত্রণ করে এমন একই বিধিনিষেধের অধীন।

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

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