সম্পাদক অ্যাড-অন অনুমোদন

অনেক Apps স্ক্রিপ্ট-ভিত্তিক অ্যাপের জন্য অনুমোদন সোজা কারণ স্ক্রিপ্ট প্রকল্পটি যখন কেউ এটি ব্যবহার করার চেষ্টা করে তখন তার প্রয়োজন অনুপস্থিত অনুমতিগুলির জন্য জিজ্ঞাসা করে৷

এডিটর অ্যাড-অনগুলির জন্য অনুমোদনের মডেলটি বিভিন্ন কারণে আরও জটিল:

  • যখন একজন ব্যবহারকারী একটি ফাইল তৈরি করেন, ব্যবহারকারীর দ্বারা ইনস্টল করা সমস্ত অ্যাড-অনগুলি এক্সটেনশন মেনুতে তালিকাভুক্ত করা হয়, এমনকি যদি ব্যবহারকারী এখনও সেই অ্যাড-অনগুলিকে অনুমোদন না করে থাকেন৷

  • এই অ্যাড-অনগুলি Google ড্রাইভে থাকা ফাইলগুলিতে কাজ করে যা সহযোগীদের সাথে ভাগ করা যেতে পারে। যে সহযোগীদের এডিটর অ্যাড-অন ইনস্টল করা নেই তারা ফাইল নির্মাতা যেখানে এটি ব্যবহার করেছেন সেখানে ডকুমেন্টে এটি দেখতে পান।

  • এডিটর অ্যাড-অন স্বয়ংক্রিয়ভাবে তাদের onOpen() ফাংশন চালায় যখন একটি নথি খোলা হয়।

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

অনুমোদন মডেল

একটি এডিটর অ্যাড-অনের অনুমোদনের মোড তার অবস্থার উপর নির্ভর করে, যা এটি কে ব্যবহার করছে তার উপর নির্ভর করে: যে ব্যবহারকারী অ্যাড-অন ইনস্টল করেছেন বা একজন সহযোগী৷

সম্পাদক অ্যাড-অন রাজ্য

এক্সটেনশন মেনুতে সম্পাদক অ্যাড-অনগুলি ইনস্টল, সক্ষম বা উভয়ই রয়েছে৷

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

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

ইনস্টল করা হয়েছে সক্রিয়
প্রযোজ্য ব্যবহারকারী নথি, ফর্ম, উপস্থাপনা, বা স্প্রেডশীট
দ্বারা সৃষ্ট দোকান থেকে একটি অ্যাড-অন পাচ্ছেন সেই দস্তাবেজ, ফর্ম, উপস্থাপনা, বা স্প্রেডশীট ব্যবহার করার সময় দোকান থেকে একটি অ্যাড-অন পাওয়া, বা
সেই দস্তাবেজ, ফর্ম, উপস্থাপনা বা স্প্রেডশীটে পূর্বে ইনস্টল করা অ্যাড-অন ব্যবহার করা
মেনু দৃশ্যমান শুধুমাত্র সেই ব্যবহারকারী, সমস্ত নথি, ফর্ম, উপস্থাপনা বা স্প্রেডশীটে তারা খোলে বা তৈরি করে সেই নথি, ফর্ম, উপস্থাপনা, বা স্প্রেডশীটে সমস্ত সহযোগী
onOpen() এর জন্য অনুমোদন মোড AuthMode.NONE
(যদি না এটি সক্ষম না হয়, এই ক্ষেত্রে AuthMode.LIMITED)
AuthMode.LIMITED

অনুমোদন মোড

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

যদি ফাইল, ফর্ম, উপস্থাপনা বা স্প্রেডশীটে একটি সম্পাদক অ্যাড-অন সক্ষম করা থাকে, onOpen() AuthMode.LIMITED এ চলে। অ্যাড-অন সক্রিয় না থাকলে এবং শুধুমাত্র ইনস্টল করা থাকলে, onOpen() AuthMode.NONE এ চলে।

AuthMode.NONE এ, একটি অ্যাড-অন নির্দিষ্ট পরিষেবাগুলি চালাতে পারে না যতক্ষণ না ব্যবহারকারী কাস্টম ফাংশনগুলি ক্লিক করে বা চালানোর মাধ্যমে অ্যাড-অনের সাথে ইন্টারঅ্যাক্ট করেন৷ যদি আপনার অ্যাড-অন এই পরিষেবাগুলি onOpen() , onInstall() , বা গ্লোবাল স্কোপে ব্যবহার করার চেষ্টা করে, তাহলে অনুমতি ব্যর্থ হয় এবং অন্যান্য কলগুলি, যেমন মেনু পূরণ করা, বন্ধ করুন । সাহায্য একমাত্র সমর্থিত বিকল্প।

সীমাবদ্ধ পরিষেবা কল চালানোর জন্য, আপনাকে অবশ্যই AuthMode.FULL অনুমোদন মোড ব্যবহার করতে হবে৷ ব্যবহারকারীর মিথস্ক্রিয়া ফাংশন, যেমন একটি মেনু বিকল্পে ক্লিক করা, শুধুমাত্র এই মোডে চলে। কোডটি AuthMode.FULL মোডে চালানোর পরে, অ্যাড-অন ব্যবহারকারীর অনুমোদিত সমস্ত স্কোপ ব্যবহার করতে পারে।

Apps Script অ্যাপস স্ক্রিপ্ট ইভেন্ট প্যারামিটারের authMode সম্পত্তি হিসাবে অনুমোদন মোড পাস করে, e ; e.authMode এর মান Apps Script ScriptApp.AuthMode enum-এর একটি ধ্রুবকের সাথে মিলে যায়।

অনুমোদনের মোডগুলি সমস্ত Apps স্ক্রিপ্ট এক্সিকিউশন পদ্ধতিতে প্রযোজ্য, যার মধ্যে স্ক্রিপ্ট সম্পাদক থেকে চালানো, একটি মেনু আইটেম থেকে বা একটি Apps Script google.script.run কল থেকে। যাইহোক, e.authMode প্রপার্টিটি শুধুমাত্র তখনই পরিদর্শন করা যেতে পারে যখন স্ক্রিপ্টটি onOpen() , onEdit() বা onInstall() এর মতো ট্রিগারের ফলাফল হিসাবে চলে। Google পত্রকগুলিতে কাস্টম ফাংশনগুলি তাদের নিজস্ব অনুমোদন মোড ব্যবহার করে, AuthMode.CUSTOM_FUNCTION , যা LIMITED এর মতো কিন্তু সামান্য ভিন্ন সীমাবদ্ধতা রয়েছে৷ অন্যান্য সমস্ত ক্ষেত্রে, স্ক্রিপ্টগুলি AuthMode.FULL এ চলে, যেমনটি নিম্নলিখিত টেবিলে বর্ণনা করা হয়েছে।

NONE LIMITED CUSTOM_FUNCTION FULL
জন্য ঘটে onOpen() (যদি ব্যবহারকারী একটি অ্যাড-অন ইনস্টল করে থাকেন তবে ডকুমেন্ট, ফর্ম, উপস্থাপনা বা স্প্রেডশীটে এটি সক্ষম না করেন) onOpen() (অন্য সব সময়)
onEdit() (শুধুমাত্র পত্রকগুলিতে)
কাস্টম ফাংশন অন্যান্য সব সময়, সহ:
ইনস্টলযোগ্য ট্রিগার
onInstall()
google.script.run
ব্যবহারকারীর ডেটাতে অ্যাক্সেস শুধুমাত্র লোকেল শুধুমাত্র লোকেল শুধুমাত্র লোকেল হ্যাঁ
নথি, ফর্ম, উপস্থাপনা, বা স্প্রেডশীটে অ্যাক্সেস না হ্যাঁ হ্যাঁ — শুধুমাত্র পঠনযোগ্য হ্যাঁ
ইউজার ইন্টারফেসে অ্যাক্সেস মেনু আইটেম যোগ করুন মেনু আইটেম যোগ করুন না হ্যাঁ
Properties অ্যাক্সেস না হ্যাঁ হ্যাঁ হ্যাঁ
Jdbc , UrlFetch এ অ্যাক্সেস না না হ্যাঁ হ্যাঁ
অন্যান্য পরিষেবা Logger
Utilities
ব্যবহারকারীর ডেটা অ্যাক্সেস করে না এমন কোনও পরিষেবা ব্যবহারকারীর ডেটা অ্যাক্সেস করে না এমন কোনও পরিষেবা সমস্ত পরিষেবা

একটি সম্পাদক অ্যাড-অনের অনুমোদনের জীবনচক্র

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

এডিটর অ্যাড-অন ইনস্টল করা আছে

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

function onInstall(e) {
  onOpen(e);
  // Perform additional setup as needed.
}

এডিটর অ্যাড-অন খোলা হয়েছে

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

যদি একটি অ্যাড-অন শুধুমাত্র একটি মৌলিক মেনু তৈরি করে, মোড কোন ব্যাপার না। নিম্নলিখিত নমুনা একটি মৌলিক onOpen() ফাংশন দেখায়:

function onOpen(e) {
  SpreadsheetApp.getUi().createAddonMenu() // Or DocumentApp.
      .addItem('Insert chart', 'insertChart')
      .addItem('Update charts', 'updateCharts')
      .addToUi();
}

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

নিম্নলিখিত নমুনা একটি উন্নত onOpen() ফাংশন দেখায় যা অনুমোদন মোডের উপর ভিত্তি করে তার ক্রিয়া পরিবর্তন করে:

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp.
  if (e && e.authMode == ScriptApp.AuthMode.NONE) {
    // Add a normal menu item (works in all authorization modes).
    menu.addItem('Start workflow', 'startWorkflow');
  } else {
    // Add a menu item based on properties (doesn't work in AuthMode.NONE).
    var properties = PropertiesService.getDocumentProperties();
    var workflowStarted = properties.getProperty('workflowStarted');
    if (workflowStarted) {
      menu.addItem('Check workflow status', 'checkWorkflow');
    } else {
      menu.addItem('Start workflow', 'startWorkflow');
    }
  }
  menu.addToUi();
}

মনে রাখবেন যে অ্যাড-অনগুলি AuthMode.LIMITED এ চালানোর সময় সাইডবার বা ডায়ালগ খুলতে পারে না। আপনি সাইডবার এবং ডায়ালগ খুলতে মেনু আইটেম ব্যবহার করতে পারেন যেহেতু এগুলো AuthMode.FULL এ চলে

একজন ব্যবহারকারী সম্পাদক অ্যাড-অন চালান

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

অ্যাড-অন মেনু রেন্ডার হচ্ছে না সমস্যার সমাধান করুন

আপনার কোড অনুমোদন মোড সঠিকভাবে পরিচালনা না করলে আপনার অ্যাড-অন মেনু রেন্ডার নাও হতে পারে। যেমন:

  • একটি অ্যাড-অন একটি Apps স্ক্রিপ্ট পরিষেবা চালানোর চেষ্টা করে যা বর্তমান অনুমোদন মোড দ্বারা সমর্থিত নয়৷

  • একটি অ্যাড-অন কোনও ব্যবহারকারীর সাথে যোগাযোগ করার আগে একটি পরিষেবা কল চালানোর চেষ্টা করে।

AuthMode.NONE এ অনুমতি ত্রুটি সৃষ্টিকারী একটি পরিষেবা কল অপসারণ বা পুনর্বিন্যাস করতে, নিম্নলিখিত ক্রিয়াগুলি চেষ্টা করুন:

  1. আপনার অ্যাড-অনের জন্য অ্যাপস স্ক্রিপ্ট প্রকল্প খুলুন এবং onOpen() ফাংশনটি সনাক্ত করুন।
  2. অ্যাপস স্ক্রিপ্ট পরিষেবা বা তাদের সাথে সম্পর্কিত বস্তুর উল্লেখের জন্য onOpen() ফাংশন অনুসন্ধান করুন, যেমন PropertiesService , SpreadsheetApp বা GmailApp
  3. যদি একটি পরিষেবা UI উপাদানগুলি তৈরি করা ছাড়া অন্য কিছুর জন্য ব্যবহার করা হয় তবে এটিকে সরান বা এটিকে একটি মন্তব্য ব্লকে মোড়ানো। শুধুমাত্র এই পদ্ধতিগুলি ছেড়ে দিন: .getUi() , .createMenu() , .addItem() , এবং .addToUi() । এছাড়াও একটি ফাংশনের বাইরে যে কোনো পরিষেবা খুঁজে বের করুন এবং সরান৷
  4. পূর্ববর্তী ধাপে মন্তব্য করা বা সরানো কোডের লাইনগুলি থাকতে পারে এমন ফাংশনগুলি চিহ্নিত করুন, বিশেষ করে যেগুলি তাদের তৈরি করা তথ্য ব্যবহার করে এবং পরিষেবা কলগুলিকে তাদের প্রয়োজনীয় ফাংশনে স্থানান্তর করুন৷ পূর্ববর্তী ধাপে করা পরিবর্তনগুলিকে সামঞ্জস্য করতে আপনার কোডবেসকে পুনরায় সাজান বা পুনরায় লিখুন।
  5. কোড সংরক্ষণ করুন এবং একটি পরীক্ষা স্থাপনা তৈরি করুন।

    আপনি যখন একটি পরীক্ষা স্থাপনা তৈরি করেন, নিশ্চিত করুন যে বর্তমান ব্যবহারকারীর জন্য কনফিগার ক্ষেত্রটি ইনস্টল করা আছে এবং কনফিগার বাক্সের নীচের পাঠ্যটি AuthMode.None এ Test বলছে৷

  6. পরীক্ষা স্থাপনা চালু করুন এবং এক্সটেনশন মেনু খুলুন।

  7. সমস্ত মেনু আইটেম প্রদর্শিত হলে, সমস্যা সংশোধন করা হয়েছে। আপনি যদি শুধুমাত্র সাহায্য মেনু দেখতে পান, তাহলে ধাপ 1-এ ফিরে যান। আপনি হয়তো একটি পরিষেবা কল মিস করেছেন।