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

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

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

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

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

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

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

অনুমোদন মডেল

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

সম্পাদক অ্যাড-অন অবস্থা

এক্সটেনশন মেনুতে এডিটর অ্যাড-অনগুলি ইনস্টল, সক্রিয়, অথবা উভয়ই করা আছে।

  • কোনও নির্দিষ্ট ব্যবহারকারী বা তাদের প্রশাসক যখন Google Workspace Marketplace থেকে এটি পান এবং তাদের 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, Apps Script ইভেন্ট প্যারামিটারের authMode সম্পত্তি হিসেবে অনুমোদন মোড পাস করে, e ; e.authMode এর মান Apps Script ScriptApp.AuthMode enum-এর একটি ধ্রুবকের সাথে মিলে যায়।

অনুমোদন মোডগুলি সমস্ত অ্যাপস স্ক্রিপ্ট এক্সিকিউশন পদ্ধতিতে প্রযোজ্য, যার মধ্যে স্ক্রিপ্ট এডিটর থেকে চালানো, মেনু আইটেম থেকে চালানো, অথবা অ্যাপস স্ক্রিপ্ট google.script.run কল থেকে চালানো অন্তর্ভুক্ত। তবে, e.authMode প্রপার্টিটি কেবল তখনই পরিদর্শন করা যেতে পারে যদি স্ক্রিপ্টটি onOpen() , onEdit() বা onInstall() এর মতো ট্রিগারের ফলে চলে। Google Sheets-এর কাস্টম ফাংশনগুলি তাদের নিজস্ব অনুমোদন মোড, 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();
}

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

নিম্নলিখিত নমুনাটি একটি উন্নত 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 এ মেনু আইটেমের সাথে সম্পর্কিত ফাংশনটি চালায়। অ্যাড-অনটি ডকুমেন্ট, ফর্ম, উপস্থাপনা বা স্প্রেডশিটে সক্রিয় থাকে যদি এটি ইতিমধ্যে না থাকে।

অ্যাড-অন মেনু রেন্ডার না হওয়ার সমস্যা সমাধান করুন

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

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

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

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

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

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

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

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