Apps Script को Google की इन-बिल्ट सेवाओं या Google की ऐडवांस सेवाओं से निजी डेटा ऐक्सेस करने के लिए, उपयोगकर्ता की अनुमति की ज़रूरत होती है.
Google की सेवाओं के लिए पुष्टि करने की प्रोसेस कैसे काम करती है
जब किसी स्क्रिप्ट को Google की सेवाओं का ऐक्सेस चाहिए होता है, तो वह इस सामान्य प्रोसेस का पालन करती है:
- पहचान करना: Apps Script, स्क्रिप्ट को स्कैन करके यह पता लगाता है कि वह किन सेवाओं का इस्तेमाल करती है. उदाहरण के लिए,
SpreadsheetAppयाGmailApp. - स्कोप तय करना: स्कैन के आधार पर, Apps Script उन OAuth स्कोप के सेट की पहचान करता है जिनकी ज़रूरत स्क्रिप्ट को चलाने के लिए होती है.
- अनुमति की जांच: स्क्रिप्ट चलाने पर, यह जांच की जाती है कि उपयोगकर्ता ने उन स्कोप के लिए पहले ही अनुमति दी है या नहीं.
- उपयोगकर्ता को दिखने वाला प्रॉम्प्ट: अगर अनुमति नहीं दी गई है, तो एक डायलॉग बॉक्स दिखता है. इसमें उपयोगकर्ता से अनुमति देने के लिए कहा जाता है.
- स्क्रिप्ट का चलना: स्क्रिप्ट को अनुमति मिलने के बाद, वह उस उपयोगकर्ता के लिए अनुरोध किए गए डेटा को ऐक्सेस कर सकती है.
अनुमतियां और स्क्रिप्ट के टाइप
स्क्रिप्ट किस उपयोगकर्ता के क्रेडेंशियल के साथ चलती है और इस वजह से वह किस डेटा को ऐक्सेस कर सकती है, यह इस बात पर निर्भर करता है कि स्क्रिप्ट किस स्थिति में चल रही है. इस बारे में यहां दी गई टेबल में बताया गया है.
| स्क्रिप्ट का टाइप | स्क्रिप्ट इस तरह चलती है... |
|---|---|
| स्टैंडअलोन, ऐड-ऑन या Docs, Sheets, Slides या Forms से जुड़ा हुआ | कीबोर्ड पर मौजूद उपयोगकर्ता |
| स्प्रेडशीट में कस्टम फ़ंक्शन | पहचान छिपाने वाला उपयोगकर्ता; हालांकि, कोटा की सीमाएं कीबोर्ड का इस्तेमाल करने वाले उपयोगकर्ता के लिए लागू होती हैं |
| वेब ऐप्लिकेशन या Google Sites गैजेट | कीबोर्ड का इस्तेमाल करने वाला व्यक्ति या स्क्रिप्ट का मालिक. यह इस बात पर निर्भर करता है कि ऐप्लिकेशन को डिप्लॉय करते समय कौनसे विकल्प चुने गए हैं |
| इंस्टॉल किया जा सकने वाला ट्रिगर | ट्रिगर बनाने वाला उपयोगकर्ता |
ऐक्सेस करने के अधिकार देना
Apps Script, कोड को स्कैन करके अनुमति के स्कोप (जैसे, आपकी Google Sheets फ़ाइलों या Gmail को ऐक्सेस करना) अपने-आप तय करती है. कमेंट किए गए कोड से भी अनुमति के लिए अनुरोध जनरेट किया जा सकता है. अगर किसी स्क्रिप्ट को अनुमति की ज़रूरत होती है, तो उसे चलाने पर आपको अनुमति देने के लिए यहां दिखाए गए डायलॉग में से कोई एक दिखेगा.
जिन स्क्रिप्ट को आपने पहले अनुमति दी थी वे भी अतिरिक्त अनुमति मांगती हैं. ऐसा तब होता है, जब कोड में बदलाव करने से नई सेवाएं जुड़ जाती हैं. अगर स्क्रिप्ट को वेब ऐप्लिकेशन के तौर पर ऐक्सेस किया जाता है, तो हो सकता है कि स्क्रिप्ट को अनुमति का अनुरोध करने की ज़रूरत न पड़े. ऐसा तब होता है, जब वेब ऐप्लिकेशन स्क्रिप्ट के मालिक की उपयोगकर्ता पहचान के तहत चलता है.
OAuth क्लाइंट की पुष्टि करना लेख पढ़ें.ऐक्सेस के अधिकार वापस लेना
किसी स्क्रिप्ट को अपने डेटा का ऐक्सेस देने की अनुमति वापस लेने के लिए, यह तरीका अपनाएं:
- अपने Google खाते के लिए अनुमतियों वाले पेज पर जाएं. (अगर आपको आने वाले समय में इस पेज पर जाना है, तो Google.com पर जाएं. इसके बाद, स्क्रीन पर सबसे ऊपर दाएं कोने में मौजूद, अपने खाते की फ़ोटो पर क्लिक करें. इसके बाद, मेरा खाता पर क्लिक करें. फिर, "साइन-इन और सुरक्षा" सेक्शन में जाकर, कनेक्ट किए गए ऐप्लिकेशन और साइटें पर क्लिक करें. इसके बाद, ऐप्लिकेशन मैनेज करें पर क्लिक करें.)
- उस स्क्रिप्ट के नाम पर क्लिक करें जिसके लिए आपको अनुमति वापस लेनी है. इसके बाद, दाईं ओर मौजूद हटाएं पर क्लिक करें. इसके बाद, दिखने वाले डायलॉग में ठीक है पर क्लिक करें.
स्कोप को मौजूदा दस्तावेज़ तक सीमित करें
अगर आपको कोई ऐसा ऐड-ऑन या स्क्रिप्ट बनानी है जो Spreadsheet service, Document service, Slides service या Forms service का इस्तेमाल करती है, तो आपके पास अनुमति मांगने वाले डायलॉग बॉक्स को यह निर्देश देने का विकल्प होता है कि वह सिर्फ़ उन फ़ाइलों का ऐक्सेस मांगे जिनमें ऐड-ऑन या स्क्रिप्ट का इस्तेमाल किया गया है. इसके बजाय, वह उपयोगकर्ता की सभी स्प्रेडशीट, दस्तावेज़ों या फ़ॉर्म का ऐक्सेस न मांगे. इसके लिए, फ़ाइल-लेवल की टिप्पणी में यह JsDoc एनोटेशन शामिल करें:
/**
* @OnlyCurrentDoc
*/
अगर आपकी स्क्रिप्ट में ऐसी लाइब्रेरी शामिल है जो @OnlyCurrentDoc का एलान करती है, लेकिन मुख्य स्क्रिप्ट को मौजूदा फ़ाइल के अलावा किसी और फ़ाइल को ऐक्सेस करने की ज़रूरत है, तो @NotOnlyCurrentDoc एनोटेशन उपलब्ध है.
ऐड-ऑन के लिए अनुमति देने की लाइफ़साइकल
Google Sheets, Docs, Slides, और Forms के लिए ऐड-ऑन, आम तौर पर उसी अनुमति मॉडल का पालन करते हैं जो किसी दस्तावेज़ से बाउंड की गई स्क्रिप्ट के लिए होता है. हालाँकि, कुछ मामलों में onOpen(e) और onEdit(e) फ़ंक्शन, बिना अनुमति वाले मोड में काम करते हैं. इससे कुछ और समस्याएं भी हो सकती हैं. ज़्यादा जानकारी के लिए, ऐड-ऑन के लिए अनुमति देने के लाइफ़साइकल से जुड़ी गाइड देखें.
OAuth ऐप्लिकेशन के उपयोगकर्ताओं की सीमाएं
Google उपयोगकर्ता के डेटा को ऐक्सेस करने के लिए OAuth का इस्तेमाल करने वाले ऐप्लिकेशन पर, अनुमति देने की सीमाएं लागू होती हैं. इनमें Apps Script प्रोजेक्ट भी शामिल हैं. ज़्यादा जानकारी के लिए, OAuth ऐप्लिकेशन के उपयोगकर्ताओं की सीमाएं देखें.
Apps Script के साथ फिर से पुष्टि करने का तरीका
Apps Script, दोबारा पुष्टि करने की फ़्रीक्वेंसी लागू नहीं करता है. यह फ़्रीक्वेंसी, Google Cloud Services की सेटिंग में कॉन्फ़िगर की जाती है. ऐसा इसलिए होता है, क्योंकि Apps Script में ट्रिगर का इस्तेमाल करके स्क्रिप्ट को अपने-आप चलाया जा सकता है. ये ट्रिगर, उपयोगकर्ता के सीधे इंटरैक्शन के बिना काम करते हैं. ऑटोमेटेड तरीके से किए गए इन कामों के लिए, फिर से पुष्टि करने के लिए कहा नहीं जाता. Apps Script ऐप्लिकेशन, तय की गई समयावधि (उदाहरण के लिए, 12 घंटे) के बाद, आपसे फिर से पुष्टि करने के लिए अपने-आप नहीं कहेगा.
मेनिफ़ेस्ट में साफ़ तौर पर स्कोप सेट करना
Apps Script, फ़ंक्शन कॉल के लिए कोड को स्कैन करके, ज़रूरी स्कोप का अपने-आप पता लगाती है. अगर आपको ज़्यादा कंट्रोल चाहिए, तो प्रोजेक्ट मेनिफ़ेस्ट (appsscript.json) में जाकर, स्कोप सेट किए जा सकते हैं. पब्लिश की गई स्क्रिप्ट के लिए, यह तरीका अपनाने का सुझाव दिया जाता है. इससे यह पक्का किया जा सकता है कि आपके पास ज़रूरी अनुमतियां ही हों.
निर्देशों के लिए, स्कोप सेट करना लेख पढ़ें.
समस्या का हल
- ट्रिगर चलाने पर"अनुमति ज़रूरी है" गड़बड़ी का मैसेज दिखना: ट्रिगर को उस उपयोगकर्ता से अनुमति मिलनी चाहिए जिसने उन्हें बनाया है. अगर आपने ऐसा कोड जोड़ा है जिसके लिए नई अनुमतियों की ज़रूरत है, तो आपको स्क्रिप्ट एडिटर में जाकर, किसी फ़ंक्शन को मैन्युअल तरीके से एक बार चलाना होगा. इससे अनुमति देने के लिए डायलॉग बॉक्स ट्रिगर होगा.
- स्कोप अपडेट नहीं हो रहे हैं: अगर आपने अपना कोड अपडेट कर दिया है, लेकिन अनुमति वाले डायलॉग बॉक्स में बदलाव नहीं दिख रहे हैं, तो प्रोजेक्ट को सेव करें और एडिटर को रीफ़्रेश करें. अगर मेनिफ़ेस्ट में साफ़ तौर पर स्कोप का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपने
oauthScopesऐरे में नया स्कोप जोड़ा हो. - "यह ऐप्लिकेशन ब्लॉक कर दिया गया है" या पुष्टि नहीं किए गए ऐप्लिकेशन के लिए चेतावनी: ऐसा तब होता है, जब आपकी स्क्रिप्ट में संवेदनशील या प्रतिबंधित स्कोप का इस्तेमाल किया जाता है और Google ने उसकी पुष्टि नहीं की है. OAuth क्लाइंट की पुष्टि करना लेख पढ़ें.