लाइब्रेरी

लाइब्रेरी एक स्क्रिप्ट प्रोजेक्ट होती है, जिसके फ़ंक्शन को दूसरी स्क्रिप्ट में फिर से इस्तेमाल किया जा सकता है.

लाइब्रेरी का ऐक्सेस पाना

अपने प्रोजेक्ट में लाइब्रेरी शामिल करने के लिए, आपके पास कम से कम उसका व्यू-लेवल ऐक्सेस होना चाहिए. अगर उस लाइब्रेरी का मालिकाना हक आपके पास नहीं है जिसे आपको शामिल करना है, तो लेखक से संपर्क करके उसका ऐक्सेस मांगें.

आपके पास उस लाइब्रेरी का स्क्रिप्ट आईडी होना चाहिए जिसे शामिल करना है. लाइब्रेरी का ऐक्सेस होने के बाद, आपको प्रोजेक्ट सेटिंग पेज पर स्क्रिप्ट आईडी मिल जाएगा.

अपने स्क्रिप्ट प्रोजेक्ट में कोई लाइब्रेरी जोड़ें

  1. Apps Script एडिटर में बाईं ओर, "लाइब्रेरी" के बगल में, लाइब्रेरी जोड़ें पर क्लिक करें.
  2. "स्क्रिप्ट आईडी" फ़ील्ड में, लाइब्रेरी की स्क्रिप्ट आईडी पेस्ट करें.
  3. लुक अप पर क्लिक करें.
  4. वर्शन ड्रॉपडाउन पर क्लिक करें और इस्तेमाल करने के लिए लाइब्रेरी का वर्शन चुनें.
  5. देखें कि इस लाइब्रेरी के साथ आपको डिफ़ॉल्ट तौर पर जो "आइडेंटिफ़ायर" इस्तेमाल करना है क्या वह डिफ़ॉल्ट नाम है. लाइब्रेरी का रेफ़रंस देने के लिए, आपकी स्क्रिप्ट इसी नाम का इस्तेमाल करती है. उदाहरण के लिए, अगर आपने उसे Test पर सेट किया है, तो उस लाइब्रेरी के तरीके को इस तरह कॉल किया जा सकता है: Test.libraryMethod().
  6. जोड़ें पर क्लिक करें.

लाइब्रेरी का इस्तेमाल करना

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

शामिल की गई लाइब्रेरी के रेफ़रंस दस्तावेज़, यह तरीका अपनाकर खोला जा सकता है:

स्क्रिप्ट एडिटर की बाईं ओर, लाइब्रेरी के नाम के बगल में, ज़्यादा > नए टैब में खोलें पर क्लिक करें.

लाइब्रेरी हटाना

स्क्रिप्ट एडिटर की बाईं ओर, लाइब्रेरी के नाम के बगल में, ज़्यादा > हटाएं > लाइब्रेरी हटाएं पर क्लिक करें.

लाइब्रेरी अपडेट करना

लाइब्रेरी का वर्शन बदला जा सकता है या उसका आइडेंटिफ़ायर अपडेट किया जा सकता है.

  1. एडिटर के बाईं ओर, "लाइब्रेरी" में जाकर, लाइब्रेरी के नाम पर क्लिक करें.
  2. बदलाव करने के बाद, सेव करें पर क्लिक करें.

लाइब्रेरी बनाना और शेयर करना

अपने स्क्रिप्ट प्रोजेक्ट को लाइब्रेरी के तौर पर इस्तेमाल और शेयर करने के लिए, नीचे दिया गया तरीका अपनाएं.

  1. अपनी स्क्रिप्ट का वर्शन वाला डिप्लॉयमेंट बनाएं.
  2. लाइब्रेरी के सभी संभावित उपयोगकर्ताओं के साथ, कम से कम व्यू-लेवल का ऐक्सेस शेयर करें.
  3. उन उपयोगकर्ताओं को स्क्रिप्ट आईडी दें. इसे प्रोजेक्ट सेटिंग पेज पर देखा जा सकता है.

सबसे सही तरीके

लाइब्रेरी लिखते समय इन दिशा-निर्देशों का पालन करें:

  1. अपने प्रोजेक्ट के लिए कोई सही नाम चुनें, क्योंकि जब दूसरे लोग आपकी लाइब्रेरी को शामिल करते हैं, तो इसका इस्तेमाल डिफ़ॉल्ट आइडेंटिफ़ायर के तौर पर किया जाता है.
  2. अगर आप चाहते हैं कि आपकी स्क्रिप्ट के एक या उससे ज़्यादा तरीके आपकी लाइब्रेरी के उपयोगकर्ताओं को न दिखें (और इस्तेमाल नहीं किए जा सकते), तो आप तरीके के नाम के आखिर में अंडरस्कोर का इस्तेमाल कर सकते हैं. उदाहरण के लिए, myPrivateMethod_().
  3. लाइब्रेरी के उपयोगकर्ताओं को सिर्फ़ गिनी जा सकने वाली ग्लोबल प्रॉपर्टी दिखती हैं. इसमें फ़ंक्शन की जानकारी, var वाले फ़ंक्शन के बाहर बनाए गए वैरिएबल, और ग्लोबल ऑब्जेक्ट पर खास तौर पर सेट की गई प्रॉपर्टी शामिल हैं. उदाहरण के लिए, enumerable के साथ Object.defineProperty() को false पर सेट किया जाता है, तो यह एक ऐसा सिंबल बनाता है जिसे अपनी लाइब्रेरी में इस्तेमाल किया जा सकता है. हालांकि, आपके उपयोगकर्ता इस सिंबल को ऐक्सेस नहीं कर सकते.
  4. अगर आपको अपनी लाइब्रेरी के उपयोगकर्ताओं को, स्क्रिप्ट एडिटर ऑटोकंप्लीट की सुविधा और अपने-आप जनरेट होने वाले दस्तावेज़ों का इस्तेमाल करने की सुविधा देनी है, तो आपके पास अपने सभी फ़ंक्शन के लिए, JSDoc-स्टाइल वाला दस्तावेज़ होना चाहिए. यहां एक उदाहरण दिया गया है:

    /**
     * Raises a number to the given power, and returns the result.
     *
     * @param {number} base the number we're raising to a power
     * @param {number} exp the exponent we're raising the base to
     * @return {number} the result of the exponential calculation
     */
    function power(base, exp) { ... }
    

संसाधन का दायरा

लाइब्रेरी के साथ काम करते समय दो तरह के संसाधन होते हैं: शेयर किए गए और शेयर नहीं किए गए. शेयर किए गए संसाधन का मतलब है कि लाइब्रेरी और शामिल की गई स्क्रिप्ट, दोनों में संसाधन के एक ही इंस्टेंस का बिल्ट-इन ऐक्सेस होता है. यहां दिए गए डायग्राम में, उपयोगकर्ता प्रॉपर्टी के उदाहरण का इस्तेमाल करके, शेयर किए गए संसाधन को दिखाया गया है:

शेयर किया गया संसाधन

शेयर नहीं किए गए संसाधन का मतलब है कि लाइब्रेरी और इसमें शामिल स्क्रिप्ट, दोनों में रिसॉर्स के सिर्फ़ इंस्टेंस का ऐक्सेस दिया गया है. हालांकि, कोई लाइब्रेरी उन संसाधनों के लिए ऐक्सेस दे सकती है जो शेयर नहीं किए गए हैं. इन संसाधनों पर काम करने वाले साफ़ तौर पर काम करने वाले फ़ंक्शन मौजूद होते हैं. यहां एक फ़ंक्शन का उदाहरण दिया गया है, जिसे अपनी लाइब्रेरी में शामिल करके उसकी स्क्रिप्ट प्रॉपर्टी दिखानी है:

  function getLibraryProperty(key) {
    return ScriptProperties.getProperty(key);
  }

नीचे दिया गया डायग्राम, स्क्रिप्ट प्रॉपर्टी के उदाहरण का इस्तेमाल करके शेयर नहीं किए गए संसाधन को दिखाता है:

शेयर नहीं किया गया संसाधन

इस टेबल में, शेयर किए गए और शेयर नहीं किए गए संसाधन दिए गए हैं. ये संसाधन आपकी जानकारी के लिए हैं:

संसाधन शेयर किए गए* शेयर नहीं किया गया** ज़रूरी जानकारी
लॉक करें लाइब्रेरी में बनाए जाने पर, स्क्रिप्ट के साथ-साथ सभी लोगों को यही इंस्टेंस दिखता है.
स्क्रिप्ट गुण लाइब्रेरी में बनाए जाने पर, स्क्रिप्ट के साथ-साथ सभी लोगों को यही इंस्टेंस दिखता है.
कैशे लाइब्रेरी में बनाए जाने पर, स्क्रिप्ट के साथ-साथ सभी लोगों को यही इंस्टेंस दिखता है.
ट्रिगर लाइब्रेरी में बनाए गए आसान ट्रिगर, शामिल की गई स्क्रिप्ट से ट्रिगर नहीं होते हैं.
ScriptApp
UiApp
उपयोगकर्ता प्रॉपर्टी
लॉगर और निष्पादन ट्रांसक्रिप्ट
Sites, Sheets, और अन्य कंटेनर getActive() को किए जाने पर, स्क्रिप्ट के कंटेनर की जानकारी मिलती है.
MailApp और GmailApp
* इसका मतलब है कि लाइब्रेरी के पास सुविधा/संसाधन का अपना अलग इंस्टेंस नहीं होता. इसके बजाय, इसमें उस स्क्रिप्ट का इस्तेमाल किया जाता है जो इसे शुरू करने वाली स्क्रिप्ट ने बनाया है.
** इसका मतलब है कि लाइब्रेरी में संसाधन/सुविधा का अपना इंस्टेंस होता है और लाइब्रेरी का इस्तेमाल करने वाली सभी स्क्रिप्ट के पास उसी इंस्टेंस का ऐक्सेस होता है.

लाइब्रेरी की जांच करना

अपनी लाइब्रेरी की जांच करने के लिए, हेड डिप्लॉयमेंट का इस्तेमाल करें. जिस व्यक्ति के पास स्क्रिप्ट का एडिटर लेवल ऐक्सेस है वह हेड डिप्लॉयमेंट का इस्तेमाल कर सकता है.

लाइब्रेरी डीबग करना

जब किसी ऐसे प्रोजेक्ट में डीबगर का इस्तेमाल किया जाता है जिसमें लाइब्रेरी होती है, तो आपके पास शामिल की गई लाइब्रेरी के फ़ंक्शन में जाने का विकल्प होता है. यह कोड डीबगर में, सिर्फ़ देखने वाले मोड में और सही वर्शन पर दिखता है.