एडिटर ऐड-ऑन की अनुमति

Apps Script पर आधारित कई ऐप्लिकेशन के लिए अनुमति देना आसान है, क्योंकि जब कोई व्यक्ति कोशिश करता है, तो स्क्रिप्ट प्रोजेक्ट उसे अनुपलब्ध अनुमति मांगता है इसका इस्तेमाल करें.

पुष्टि करने के लिए, एडिटर ऐड-ऑन कई वजहों से ज़्यादा जटिल:

  • जब कोई उपयोगकर्ता कोई फ़ाइल बनाता है, तो वे सभी ऐड-ऑन जिन्हें उपयोगकर्ता इंस्टॉल करता है एक्सटेंशन मेन्यू में मौजूद होते हैं, यहां तक कि अगर उपयोगकर्ता ने अभी तक उन ऐड-ऑन को अनुमति नहीं दी है.

  • ये ऐड-ऑन इसमें मौजूद फ़ाइलों पर काम करते हैं Google Drive, जिसे सहयोगियों के साथ शेयर किया जा सकता है. वे सहयोगी जो ये काम नहीं करते एडिटर ऐड-ऑन को इंस्टॉल करके उसे दस्तावेज़ों में देखें जहां फ़ाइल बनाने वाले ने उसका इस्तेमाल किया है.

  • एडिटर ऐड-ऑन, अपने-आप onOpen() काम करते हैं दस्तावेज़ के खुलने पर फ़ंक्शन काम करता है.

उपयोगकर्ता के डेटा को सुरक्षित रखने के लिए, अनुमति देने वाले मोड लागू किए जाते हैं. इनकी मदद से कुछ सेवाएं काम करती हैं onOpen() के लिए उपलब्ध नहीं है. इस गाइड से आपको यह समझने में मदद मिलेगी कि आपका कोड कब और कैसे कर सकते हैं.

अनुमति देने वाला मॉडल

एडिटर ऐड-ऑन का ऑथराइज़ेशन मोड, इन बातों पर निर्भर करता है उसकी स्थिति, जो इस पर निर्भर करती है कि उसका इस्तेमाल कौन कर रहा है: वह उपयोगकर्ता जिसने ऐड-ऑन इंस्टॉल किया है या सहयोगी के तौर पर मार्क किया जा सकता है.

एडिटर ऐड-ऑन की स्थितियां

एक्सटेंशन मेन्यू में मौजूद एडिटर ऐड-ऑन, इंस्टॉल किया गया हो, चालू किया गया हो या दोनों.

  • किसी खास यूआरएल के लिए, ऐड-ऑन इंस्टॉल किया गया है उपयोगकर्ता को या उनके एडमिन को Google Workspace Marketplace और इसे अपने Google डेटा को ऐक्सेस करने की अनुमति देना.
  • ऐड-ऑन को दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट का इस्तेमाल करे.
  • जब कोई व्यक्ति किसी फ़ाइल पर मिलकर काम करता है और उनमें से कोई एक ऐड-ऑन है, तो यह एक उपयोगकर्ता के लिए इंस्टॉल होता है और चालू किया गया होना चाहिए.

यहां दी गई टेबल में, इंस्टॉल किए गए और चालू किए गए डिवाइसों के बीच का अंतर बताया गया है. ध्यान दें कि जब स्क्रिप्ट को ऐड-ऑन के तौर पर टेस्ट करना आपके पास इनमें से किसी एक या दोनों स्थितियों में टेस्ट करने का विकल्प होता है.

इंस्टॉल किया गया चालू
इस पर लागू होता है उपयोगकर्ता दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट
इसके कारण स्टोर से ऐड-ऑन पाना ऐड-ऑन का इस्तेमाल करते समय, स्टोर से ऐड-ऑन हासिल करना दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट या
पहले से इंस्टॉल किए गए ऐड-ऑन का इस्तेमाल करके दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट
मेन्यू इन्हें दिखेगा सभी दस्तावेज़ों, फ़ॉर्म, प्रज़ेंटेशन में सिर्फ़ उस उपयोगकर्ता को या स्प्रेडशीट, जिन्हें वे खोलते या बनाते हैं उस दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन पर सभी मिलकर काम करने वाले लोग या स्प्रेडशीट
onOpen() के लिए अनुमति मोड
AuthMode.NONE (जब तक कि उसे चालू न किया गया हो. इस स्थिति में AuthMode.LIMITED)
AuthMode.LIMITED

अनुमति देने के मोड

Editor ऐड-ऑन का onOpen() फ़ंक्शन जब कोई उपयोगकर्ता दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट खोलता है, तो यह अपने-आप भर जाता है. लोगों की निजता को सुरक्षित रखने के लिए डेटा है, तो Apps Script onOpen() फ़ंक्शन कर सकता है. एडिटर ऐड-ऑन की स्थिति यह तय करता है कि onOpen() फ़ंक्शन किस अनुमति मोड में चलेगा.

अगर फ़ाइल में, एडिटर ऐड-ऑन की सुविधा चालू है, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट, onOpen() इसमें चलता है AuthMode.LIMITED. अगर ऐड-ऑन चालू नहीं है और सिर्फ़ इंस्टॉल है, onOpen() AuthMode.NONE में चलता है.

AuthMode.NONE में, ऐड-ऑन कुछ सेवाएं तब तक मिलती हैं, जब तक उपयोगकर्ता कस्टम फ़ंक्शन पर क्लिक करने या उन्हें चलाने के लिए किया जा सकता है. अगर आपके ऐड-ऑन, onOpen() में इन सेवाओं का इस्तेमाल करने की कोशिश करता है, onInstall() या ग्लोबल स्कोप, अनुमतियां न हो पाने और दूसरे कॉल, जैसे कि मेन्यू भरने के बारे में ज़्यादा जानें, बंद करें. सिर्फ़ मदद पाने का विकल्प उपलब्ध है.

प्रतिबंधित सेवा कॉल चलाने के लिए, आपको AuthMode.FULL की अनुमति का इस्तेमाल करना होगा मोड. यूज़र इंटरैक्शन फ़ंक्शन, जैसे कि मेन्यू के विकल्प पर क्लिक करना, ये सिर्फ़ इस मोड में काम करते हैं. कोड के AuthMode.FULL मोड में चलने के बाद, ऐड-ऑन उन सभी दायरों का इस्तेमाल कर सकता है जिनके लिए उपयोगकर्ता ने अनुमति दी है.

Apps Script, अनुमति देने वाले मोड को पास कर देती है Apps Script की authMode प्रॉपर्टी के तौर पर इवेंट पैरामीटर, e; इसका मान Apps Script में e.authMode कॉन्स्टेंट से मेल खाता है ScriptApp.AuthMode enum.

अनुमति मोड, Apps Script को एक्ज़ीक्यूट करने के सभी तरीकों पर लागू होते हैं, इसमें, स्क्रिप्ट एडिटर, मेन्यू आइटम या Apps Script में सेव किए जाने वाले निर्देशों का पालन करना भी शामिल है google.script.run कॉल. हालांकि, e.authMode प्रॉपर्टी की जांच सिर्फ़ तब की जा सकती है, जब स्क्रिप्ट नतीजे के तौर पर चलती है ट्रिगर, जैसे कि onOpen(), onEdit() या onInstall(). कस्टम फ़ंक्शन अपने खुद के अनुमति मोड, AuthMode.CUSTOM_FUNCTION, का इस्तेमाल करते हैं. जो LIMITED से मिलता-जुलता है, लेकिन इसकी पाबंदियां थोड़ी अलग हैं. सभी के लिए कुछ अन्य मामलों में, स्क्रिप्ट AuthMode.FULL में चलती हैं, जैसा कि यहां बताया गया है टेबल.

NONE LIMITED CUSTOM_FUNCTION FULL
इस तारीख को होगा onOpen() (अगर उपयोगकर्ता ने किसी ऐड-ऑन है, लेकिन इसे दस्तावेज़, फ़ॉर्म में चालू नहीं किया है, प्रज़ेंटेशन या स्प्रेडशीट) onOpen() (अन्य सभी समय)
onEdit() (सिर्फ़ Sheets में)
कस्टम फ़ंक्शन अन्य सभी समय, जिनमें शामिल हैं:
इंस्टॉल किए जा सकने वाले ट्रिगर
onInstall()
google.script.run
उपयोगकर्ता के डेटा का ऐक्सेस सिर्फ़ स्थान-भाषा सिर्फ़ स्थान-भाषा सिर्फ़ स्थान-भाषा हां
दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट का ऐक्सेस नहीं हां हां — सिर्फ़ पढ़ने के लिए हां
यूज़र इंटरफ़ेस का ऐक्सेस मेन्यू आइटम जोड़ना मेन्यू आइटम जोड़ना नहीं हां
Properties का ऐक्सेस नहीं हां हां हां
Jdbc, UrlFetch का ऐक्सेस नहीं नहीं हां हां
अन्य सेवाएं Logger
Utilities
ऐसी कोई भी सेवा जो उपयोगकर्ता का डेटा ऐक्सेस नहीं करती ऐसी कोई भी सेवा जो उपयोगकर्ता का डेटा ऐक्सेस नहीं करती सभी सेवाएं

एडिटर ऐड-ऑन की अनुमति मिलने की लाइफ़साइकल

जब मौजूदा उपयोगकर्ता के लिए ऐड-ऑन इंस्टॉल किया जाता है या मौजूदा फ़ाइल में चालू हो, तो दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन के लिए ऐड-ऑन को लोड किया गया, या स्प्रेडशीट का उपयोग करेगा. यह ऐड-ऑन है एक्सटेंशन मेन्यू में मौजूद होता है और सरल ट्रिगर onInstall(), onOpen() और onEdit(). अगर कोई उपयोगकर्ता किसी एक्सटेंशन मेन्यू आइटम जोड़ा है, तो यह चलता है.

एडिटर ऐड-ऑन इंस्टॉल हो गया

जब स्टोर से कोई एडिटर ऐड-ऑन इंस्टॉल किया जाता है, तो onInstall() फ़ंक्शन AuthMode.FULL में चलता है. अनुमति देने वाले इस मोड में, ऐड-ऑन, मुश्किल सेटअप रूटीन चला सकता है. आपको यह भी करना चाहिए onInstall() का इस्तेमाल मेन्यू आइटम बनाने के लिए करें, क्योंकि दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन, या स्प्रेडशीट पहले से खुली है और आपका onOpen() फ़ंक्शन नहीं चला है. नीचे दिया गया सैंपल, onOpen() फ़ंक्शन को कॉल करने का तरीका बताता है onInstall() फ़ंक्शन से:

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 Script के आधार पर डाइनैमिक मेन्यू आइटम जोड़ने के लिए प्रॉपर्टी, ताकि आप या अन्य उन्नत कार्यों को करने के लिए, आपको को अनुमति देने वाले मोड की पहचान करके, उसे सही तरीके से मैनेज करना चाहिए.

नीचे दिया गया सैंपल, एक बेहतर 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 में चलते हैं.

कोई उपयोगकर्ता, एडिटर ऐड-ऑन चलाता है

जब कोई उपयोगकर्ता किसी एक्सटेंशन मेन्यू आइटम पर क्लिक करता है, Apps Script में सबसे पहले यह जांच की जाती है कि उपयोगकर्ता ने ऐड-ऑन, और उन्हें ऐसा करने का निर्देश दिया जाता है. अगर उपयोगकर्ता ने ऐड-ऑन, स्क्रिप्ट वह फ़ंक्शन चलाती है जो AuthMode.FULL में मेन्यू आइटम से मेल खाता है. कॉन्टेंट बनाने ऐड-ऑन को दस्तावेज़, फ़ॉर्म, प्रज़ेंटेशन या स्प्रेडशीट का इस्तेमाल किया जा सकता है.

ऐड-ऑन मेन्यू रेंडर न होने की समस्या हल करना

अगर आपका कोड अनुमति मोड को सही तरीके से मैनेज नहीं करता. उदाहरण के लिए:

  • ऐड-ऑन, Apps Script को चलाने की कोशिश कर रहा है ऐसी सेवा के लिए अनुमति दें जो मौजूदा अनुमति मोड पर काम नहीं करती.

  • ऐड-ऑन, उपयोगकर्ता से पहले सेवा कॉल करने की कोशिश कर रहा है उससे इंटरैक्ट करता है.

उस सेवा कॉल को हटाने या फिर से व्यवस्थित करने के लिए जिसकी वजह से अनुमति से जुड़ी गड़बड़ियां हो रही हैं AuthMode.NONE, ये कार्रवाइयां करके देखें:

  1. अपने ऐड-ऑन के लिए Apps Script प्रोजेक्ट खोलें और पता लगाएं onOpen() फ़ंक्शन.
  2. Apps Script के बारे में जानकारी पाने के लिए, onOpen() फ़ंक्शन खोजें या उनसे संबंधित सेवाएं या ऑब्जेक्ट, जैसे कि PropertiesService, SpreadsheetApp या GmailApp.
  3. अगर किसी सेवा का इस्तेमाल यूज़र इंटरफ़ेस (यूआई) एलिमेंट बनाने के अलावा किसी और काम के लिए किया जाता है, तो उसे हटा दें या टिप्पणी वाले ब्लॉक में रैप कर दें. सिर्फ़ इन तरीकों का इस्तेमाल न करें: .getUi(), .createMenu(), .addItem(), और .addToUi(). साथ ही, ऐसी सभी सेवा को ढूंढें और हटाएं जो फ़ंक्शन से बाहर है.
  4. ऐसे फ़ंक्शन की पहचान करना जिनमें टिप्पणी किए गए या हटाए गए कोड की लाइनें शामिल हो सकती हैं पिछले चरण में, खास तौर पर उन लोगों के लिए जिन्होंने उस जानकारी का इस्तेमाल किया है, और सेवा कॉल को उनकी ज़रूरत वाले फ़ंक्शन में ले जाएं. फिर से व्यवस्थित करें या दोबारा लिखें आपका कोड बेस है, ताकि आप पिछले चरणों में किए गए बदलावों को शामिल कर सकें.
  5. कोड सेव करें और टेस्ट डिप्लॉयमेंट बनाएं.

    टेस्ट डिप्लॉयमेंट बनाते समय, पक्का करें कि कॉन्फ़िगरेशन फ़ील्ड मौजूदा उपयोगकर्ता के लिए इंस्टॉल किया गया है और कॉन्फ़िगरेशन बॉक्स के नीचे दिया गया टेक्स्ट AuthMode.None में जांच करें

  6. टेस्ट डिप्लॉयमेंट लॉन्च करें और एक्सटेंशन मेन्यू खोलें.

  7. अगर मेन्यू के सभी आइटम दिखते हैं, तो समस्या ठीक कर दी गई है. अगर आपको सिर्फ़ सहायता मेन्यू दिखता है, तो पहले चरण पर वापस जाएं. शायद आपसे कोई सेवा कॉल छूट गया हो.