समस्या का हल

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

गड़बड़ी के मैसेज

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

सिंटैक्स की गड़बड़ियां

सिंटैक्स की गड़बड़ियां, ऐसे कोड को लिखने की वजह से होती हैं जो JavaScript के हिसाब से सही नहीं होता व्याकरण के सुझाव देता है और स्क्रिप्ट को सेव करते ही गड़बड़ियों का पता लगा लिया जाता है. उदाहरण के लिए, नीचे दिए गए कोड स्निपेट में एक सिंटैक्स गड़बड़ी है:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

चौथे कोड के आखिर में सिंटैक्स की समस्या में ) वर्ण मौजूद नहीं है लाइन. स्क्रिप्ट सेव करने की कोशिश करने पर, आपको यह गड़बड़ी दिखेगी:

तर्क सूची के बाद लापता ). (पंक्ति 4)

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

रनटाइम की गड़बड़ियां

ये गड़बड़ियां फ़ंक्शन या क्लास का गलत तरीके से इस्तेमाल करने की वजह से होती हैं. ये गड़बड़ियां सिर्फ़ तब होती हैं, जब स्क्रिप्ट के चलने के बाद पता लगाया जा सकता है. उदाहरण के लिए, यह कोड इससे रनटाइम की गड़बड़ी होती है:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

कोड का प्रारूप सही है, लेकिन हम मान "john" पास कर रहे हैं के लिए MailApp.sendEmail पर कॉल करते समय ईमेल पता. क्योंकि यह मान्य ईमेल पता, स्क्रिप्ट चलाते समय नीचे दी गई गड़बड़ी होती है:

अमान्य ईमेल: जीवन (पंक्ति 5)

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

आम तौर पर होने वाली गड़बड़ियां

नीचे सामान्य गड़बड़ियों और उनके कारणों की सूची दी गई है.

सेवा का कई बार अनुरोध किया गया: <action name>

इस गड़बड़ी का मतलब है कि आपने किसी कार्रवाई के लिए, हर दिन की तय सीमा पार कर ली है. उदाहरण के लिए, अगर आपने एक से ज़्यादा ईमेल पते से एक दिन. यह कोटा, अलग-अलग लेवल पर उपभोक्ता, डोमेन, और प्रीमियर खाते जोड़े जा सकते हैं. साथ ही, इनमें किसी भी समय बदलाव किया जा सकता है. Google की घोषणा. अलग-अलग कार्रवाइयों के लिए तय की गई कोटा की सीमाएं यहां देखी जा सकती हैं: Apps Script कोटा के बारे में दस्तावेज़.

सर्वर उपलब्ध नहीं है. या सर्वर में कोई गड़बड़ी हुई, कृपया फिर से कोशिश करें.

इन गड़बड़ियों के पीछे कुछ वजहें हो सकती हैं:

  • Google सर्वर या सिस्टम अस्थायी रूप से अनुपलब्ध है. कुछ देर इंतज़ार करें और स्क्रिप्ट को दोबारा चलाने की कोशिश करें.
  • आपकी स्क्रिप्ट में ऐसी गड़बड़ी है जो संबंधित गड़बड़ी नहीं है दिखाई देगा. अपनी स्क्रिप्ट को डीबग करने की कोशिश करें और देखें कि आप समस्या को दूर कर सकते हैं या नहीं.
  • Google Apps Script में किसी गड़बड़ी की वजह से यह गड़बड़ी हो रही है. इसके लिए निर्देशों के लिए, गड़बड़ी की रिपोर्ट खोजने और फ़ाइल करने के बारे में जानकारी पाने के लिए, गड़बड़ी. नई गड़बड़ी दर्ज करने से पहले, खोजें ताकि यह देखा जा सके कि क्या अन्य लोगों ने पहले ही इसकी रिपोर्ट की है.

इस कार्रवाई के लिए अनुमति लेना ज़रूरी है.

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

स्क्रिप्ट को अनुमति देने के लिए, स्क्रिप्ट एडिटर खोलें और कोई भी फ़ंक्शन चलाएं. कॉन्टेंट बनाने अनुमति देने का अनुरोध दिखता है, ताकि आप स्क्रिप्ट प्रोजेक्ट को अनुमति दे सकें. अगर स्क्रिप्ट में नई अनधिकृत सेवाएं शामिल हैं, आपको स्क्रिप्ट को फिर से अधिकृत करना होगा.

यह गड़बड़ी अक्सर इस वजह से होती है ऐसे ट्रिगर जो उपयोगकर्ता ने उन्हें अधिकृत किया है. अगर आपके पास स्क्रिप्ट प्रोजेक्ट का ऐक्सेस नहीं है (क्योंकि गड़बड़ी आपके किसी ऐड-ऑन में हो रही है उदाहरण के लिए), आम तौर पर ऐड-ऑन का इस्तेमाल करके स्क्रिप्ट को अनुमति दी जा सकती है फिर से. अगर कोई ट्रिगर लगातार सक्रिय होता है और उसकी वजह से यह गड़बड़ी होती है, तो आप अपने ट्रिगर करता है, तो:

  1. Apps Script प्रोजेक्ट की बाईं ओर, ट्रिगर पर क्लिक करें.
  2. जिस ट्रिगर को हटाना है उसकी दाईं ओर, ज़्यादा पर क्लिक करें &gt; ट्रिगर मिटाएं.

समस्या वाले ऐड-ऑन ट्रिगर को यहां से भी हटाया जा सकता है ऐड-ऑन अनइंस्टॉल करें.

ऐक्सेस नहीं दिया गया: DriveApp या डोमेन नीति ने तीसरे पक्ष के Drive ऐप्लिकेशन को बंद कर दिया है

डोमेन के Google Workspace एडमिन के पास को अक्षम करने की क्षमता Drive API का इस्तेमाल करके, अपने डोमेन के लिए Google Drive ऐप्लिकेशन इंस्टॉल और इस्तेमाल किए जाते हैं. इस सेटिंग की वजह से, उपयोगकर्ताओं को उन Apps Script ऐड-ऑन का इस्तेमाल करने से रोकें जो Drive की सेवा या Drive की बेहतर सेवा (भले ही, एडमिन ने Drive API को बंद करने से पहले स्क्रिप्ट को अनुमति दी हो).

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

स्क्रिप्ट के पास सक्रिय उपयोगकर्ता की पहचान हासिल करने की अनुमति नहीं है.

इससे पता चलता है कि सक्रिय उपयोगकर्ता की पहचान और ईमेल पता, स्क्रिप्ट. यह चेतावनी, Session.getActiveUser(). किसी व्यक्ति को कॉल करने की वजह से भी ऐसा हो सकता है: Session.getEffectiveUser() अगर स्क्रिप्ट किसी ऐसे प्राधिकरण मोड में चल रही है जो AuthMode.FULL. अगर यह चेतावनी सिग्नल के तौर पर दी जाती है, तो आने वाले समय में User.getEmail() सिर्फ़ "" दिखाएं.

इस चेतावनी की समस्या को कई तरीकों से हल किया जा सकता है. ये तरीके प्राधिकरण मोड के अंतर्गत स्क्रिप्ट चल रही है. अनुमति मोड यह है ट्रिगर फ़ंक्शन में इस तरह से दिखाए जाते हैं कि e की authMode प्रॉपर्टी इवेंट पैरामीटर.

  • AuthMode.FULL में, इस्तेमाल करने के बारे में सोचें Session.getEffectiveUser() आज़माएं.
  • AuthMode.LIMITED में, पक्का करें कि स्वामी ने स्क्रिप्ट को अधिकृत कर दिया है.
  • अनुमति देने वाले अन्य मोड में, किसी भी तरीके को कॉल करने से बचें.
  • अगर आप नए Google Workspace ग्राहक हैं इस चेतावनी का किसी इंस्टॉल किया जा सकने वाला ट्रिगर, पक्का करें कि ट्रिगर आपके संगठन के उपयोगकर्ता के तौर पर चल रहा हो.

लाइब्रेरी मौजूद नहीं है

अगर आपने स्क्रिप्ट में कोई लोकप्रिय लाइब्रेरी जोड़ी है, तो तो हो सकता है कि आपको गड़बड़ी का कोई मैसेज मिले यह बताता है कि यह उपलब्ध नहीं है, भले ही लाइब्रेरी आपकी स्क्रिप्ट. इसकी वजह यह हो सकती है कि बहुत सारे लोग लाइब्रेरी ऐक्सेस कर रहे हों ट्रैक करने में मदद मिलती है. इस गड़बड़ी से बचने के लिए, इनमें से कोई एक तरीका आज़माएं:

  • लाइब्रेरी के कोड को कॉपी करके अपनी स्क्रिप्ट में चिपकाएं और लाइब्रेरी हटाएं निर्भर है.
  • लाइब्रेरी स्क्रिप्ट कॉपी करें और उसे अपने खाते से लाइब्रेरी के रूप में डिप्लॉय करें. पक्का करें कि आपकी ओरिजनल स्क्रिप्ट में डिपेंडेंसी को नई लाइब्रेरी में अपडेट करने के लिए इस्तेमाल करें.

लाइब्रेरी का वर्शन मौजूद न होने या मिटाए गए वर्शन पर डिप्लॉयमेंट की वजह से गड़बड़ी हुई है. गड़बड़ी का कोड नहीं मिला

गड़बड़ी के इस मैसेज में, इनमें से कोई एक जानकारी दिख रही है:

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

बेहतर सेवा का इस्तेमाल करके, Google Chat API को कॉल करते समय Error 400: invalid_scope

अगर आपको गड़बड़ी का मैसेज Error 400: invalid_scope मिलता है, तो Some requested scopes cannot be shown, तो इसका मतलब है कि आपने Apps Script प्रोजेक्ट की appsscript.json फ़ाइल. ज़्यादातर मामलों में, Apps Script में अपने-आप यह तय होता है कि स्क्रिप्ट के लिए किन दायरों की ज़रूरत होगी. लेकिन जब आप Chat की बेहतर सेवा का इस्तेमाल करते हैं, तो आपको मैन्युअल रूप से ऑथराइज़ेशन के उन स्कोप का इस्तेमाल करता है जिनका इस्तेमाल आपकी स्क्रिप्ट Apps Script प्रोजेक्ट की मेनिफ़ेस्ट फ़ाइल. यहां जाएं: अश्लील स्कोप सेट करना.

गड़बड़ी को ठीक करने के लिए, अनुमति के सही दायरे जोड़ें के हिस्से के रूप में Apps Script प्रोजेक्ट की appsscript.json फ़ाइल में oauthScopes कलेक्शन. उदाहरण के लिए, spaces.messages.create तरीका है, तो आपको ये जोड़ें:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

डीबग करना

सभी गलतियों की वजह से, गड़बड़ी का मैसेज नहीं दिखता. और भी हो सकता है ऐसी सामान्य गड़बड़ी जहां कोड तकनीकी रूप से सही होता है और निष्पादित किया जा सकता है, लेकिन नतीजे आपकी उम्मीद के मुताबिक नहीं हैं. उदाहरण के लिए, यहां ऐसी रणनीतियों के बारे में बताया गया है और ऐसी स्क्रिप्ट की आगे जांच करना जो आपके तरीके से काम नहीं कर रही है उम्मीद है.

लॉग इन हो रहा है

डीबग करते समय, जानकारी को स्क्रिप्ट प्रोजेक्ट के तौर पर रिकॉर्ड करना अक्सर मददगार होता है लागू करता है. Google Apps Script में जानकारी लॉग करने के दो तरीके हैं: क्लाउड लॉगिंग सेवा और ज़्यादा बुनियादी लॉगर और कंसोल सेवाएं जो Apps Script एडिटर में पहले से मौजूद होते हैं.

ज़्यादा जानकारी के लिए, लॉग इन करने की गाइड देखें.

रिपोर्ट करते समय गड़बड़ी हुई

रनटाइम की गड़बड़ियों की वजह से आने वाले अपवाद अपने-आप लागू हो जाते हैं इसे Google क्लाउड गड़बड़ी रिपोर्टिंग सेवा का इस्तेमाल करके रिकॉर्ड किया जाता है. यह सेवा आपको आपके स्क्रिप्ट प्रोजेक्ट के बनाए गए अपवाद वाले मैसेज को खोजना और फ़िल्टर करना.

गड़बड़ी की रिपोर्ट को ऐक्सेस करने के लिए, इस पेज पर दिए गए क्लाउड लॉग और गड़बड़ी की रिपोर्ट देखें Google Cloud Platform कंसोल.

कार्यान्वयन

जब भी आप कोई स्क्रिप्ट चलाते हैं, तो Apps Script उस स्क्रिप्ट को चलाने का रिकॉर्ड बनाती है, इसमें क्लाउड लॉग भी शामिल हैं. इन रिकॉर्ड की मदद से, यह समझा जा सकता है कि वे कार्रवाइयां जो आपकी स्क्रिप्ट ने की हैं.

अपनी स्क्रिप्ट के निष्पादन को Apps Script प्रोजेक्ट में, बाईं ओर लागू करें पर क्लिक करें .

Apps Script सेवा के स्टेटस की जांच की जा रही है

हालांकि ऐसा बहुत कम होता है, लेकिन कभी-कभी खास Google Workspace के लिए सेवाएं (जैसे कि Gmail या Drive) कुछ समय के लिए समस्याओं का सामना करना पड़ता है, जिसकी वजह से सेवा बंद हो सकती है. जब यह ऐसा होता है, तो हो सकता है कि इन सेवाओं से इंटरैक्ट करने वाले Apps Script प्रोजेक्ट काम न करें उम्मीद के मुताबिक.

यह देखा जा सकता है कि Google Workspace की कोई सेवा उपलब्ध है या नहीं कुछ समय के लिए, Google Workspace स्टेटस डैशबोर्ड. अगर सेवा कुछ समय के लिए उपलब्ध नहीं है, तो का अनुभव कर रहे हों, तो आप इसके समाधान की इंतज़ार करें या फिर में अतिरिक्त सहायता Google Workspace सहायता केंद्र या Google Workspace में आम तौर पर आने वाली समस्याएं दस्तावेज़.

डीबगर और ब्रेकपॉइंट का इस्तेमाल करना

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

ब्रेकपॉइंट जोड़ें

ब्रेकपॉइंट जोड़ने के लिए, उस लाइन की लाइन नंबर पर कर्सर घुमाएं जिसे आपको जोड़ना है . लाइन नंबर की बाईं ओर मौजूद सर्कल पर क्लिक करें. नीचे दिए गए इस इमेज में, स्क्रिप्ट में जोड़े गए ब्रेकपॉइंट का उदाहरण दिखाया गया है:

ब्रेकपॉइंट जोड़ें

डीबग मोड में स्क्रिप्ट चलाना

स्क्रिप्ट को डीबग मोड में चलाने के लिए, एडिटर में सबसे ऊपर मौजूद डीबग पर क्लिक करें.

इससे पहले कि स्क्रिप्ट ब्रेकपॉइंट के साथ लाइन को चलाती है, वह रुक जाती है और डीबग करने की जानकारी वाली टेबल. इस टेबल का इस्तेमाल करके, पैरामीटर की वैल्यू और ऑब्जेक्ट में स्टोर की गई जानकारी.

स्क्रिप्ट चलाने का तरीका कंट्रोल करने के लिए, डीबगर पैनल में सबसे ऊपर, "स्टेप इन", "स्टेप ओवर", और "आउट आउट" का इस्तेमाल करें बटन. इनसे आपको अपने ब्राउज़र पर एक बार में एक लाइन स्क्रिप्ट करें और देखें कि समय के साथ वैल्यू कैसे बदलती हैं.

एक से ज़्यादा Google खातों से जुड़ी समस्याएं

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

  • एक से ज़्यादा खातों में लॉग इन रहते हुए, अगर आपने Apps Script एडिटर खोला, Google के अनुरोध जिस खाते के साथ आपको आगे बढ़ना है उसे चुनें.

  • अगर आपको कोई वेब ऐप्लिकेशन या ऐड-ऑन खोलने पर और एक से ज़्यादा लॉगिन करने में समस्या आ रही है, तो इनमें से कोई एक आज़माएं समस्या हल करने के ये तरीके हैं:

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

सहायता पाना

ऊपर दिए गए टूल और तकनीकों का इस्तेमाल करके किसी समस्या को डीबग करने से, कई तरह की समस्याओं का सामना करना पड़ सकता है, लेकिन आपको कुछ समस्याओं का सामना करना पड़ सकता है. हल करने में मदद मिलेगी. इसके लिए हमारा सहायता पेज देखें सवाल पूछने और गड़बड़ियों को दर्ज करने के बारे में जानकारी.