सबसे अच्छे तरीके

इस दस्तावेज़ में उन सबसे सही तरीकों की जानकारी दी गई है जो परफ़ॉर्मेंस को बेहतर बनाने में आपकी मदद करेंगी आपकी स्क्रिप्ट में से.

दूसरी सेवाओं पर किए जाने वाले कॉल की संख्या कम करें

अपनी स्क्रिप्ट में JavaScript ऑपरेशन का उपयोग करना अन्य सेवाओं पर कॉल करने के लिए. वे सभी काम जो आप Google Apps Script में पूरा कर सकते हैं यह ऐसे कॉल करने की तुलना में ज़्यादा तेज़ होगा जिनसे डेटा फ़ेच करने की ज़रूरत होती है Google के सर्वर या कोई बाहरी सर्वर, जैसे कि Sheets, Docs, Sites, Translate, UrlFetch वगैरह. अगर आप चाहें तो आपकी स्क्रिप्ट तेज़ी से चलेंगी उन सेवाओं को स्क्रिप्ट से किए जाने वाले कॉल को कम करने के तरीके खोजें.

शेयर की गई ड्राइव का इस्तेमाल करके, दूसरों के साथ मिलकर काम करें

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

बैच ऑपरेशन का उपयोग करना

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

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

यहां एक उदाहरण दिया गया है — आपको इसका पालन नहीं करना चाहिए या इसका इस्तेमाल नहीं करना चाहिए. स्क्रिप्ट में हर सेल के लिए बैकग्राउंड कलर सेट करने के लिए नीचे दिए गए कोड का इस्तेमाल करता है 100 x 100 स्प्रेडशीट ग्रिड. यह नाम वाले फ़ंक्शन के तौर पर इस्तेमाल होता है कौनसे रंग का इस्तेमाल करना है, यह तय करने के लिए getColorFromCoordinates() (यहां नहीं दिखाया गया) हर सेल के लिए:

  // DO NOT USE THIS CODE. It is an example of SLOW, INEFFICIENT code.
  // FOR DEMONSTRATION ONLY
  var cell = sheet.getRange('a1');
  for (var y = 0; y < 100; y++) {
    xcoord = xmin;
    for (var x = 0; x < 100; x++) {
      var c = getColorFromCoordinates(xcoord, ycoord);
      cell.offset(y, x).setBackgroundColor(c);
      xcoord += xincrement;
    }
    ycoord -= yincrement;
    SpreadsheetApp.flush();
  }

स्क्रिप्ट काम नहीं करती है: यह 100 पंक्तियों और 100 कॉलम से लूप करती है. लगातार 10,000 सेल तक बढ़ाई जा सकती है. Google Apps Script में राइट-बैक कैश मेमोरी से मदद मिलती है, क्योंकि यह हर लाइन के आखिर में फ़्लश का इस्तेमाल करके लिखने के लिए मजबूर करता है. क्योंकि कैश मेमोरी में से सिर्फ़ 100 कॉल हैं.

हालांकि, कॉल को बैच बनाकर, कोड को और बेहतर बनाया जा सकता है. यहाँ है फिर से लिखें जिसमें सेल श्रेणी को एक सरणी में पढ़ा जाता है, जिसे रंग कहा जाता है, रंग असाइनमेंट ऑपरेशन, अरे में मौजूद डेटा पर किया जाता है और कलेक्शन को स्प्रेडशीट में लिखा जाता है:

  // OKAY TO USE THIS EXAMPLE or code based on it.
  var cell = sheet.getRange('a1');
  var colors = new Array(100);
  for (var y = 0; y < 100; y++) {
    xcoord = xmin;
    colors[y] = new Array(100);
    for (var x = 0; x < 100; x++) {
      colors[y][x] = getColorFromCoordinates(xcoord, ycoord);
      xcoord += xincrement;
    }
    ycoord -= yincrement;
  }
  sheet.getRange(1, 1, 100, 100).setBackgroundColors(colors);

कम क्षमता वाले कोड को चलने में करीब 70 सेकंड लगते हैं. कुशल कोड इसमें चलता है सिर्फ़ 1 सेकंड!

बहुत ज़्यादा यूज़र इंटरफ़ेस (यूआई) वाली स्क्रिप्ट में लाइब्रेरी का इस्तेमाल करने से बचें

लाइब्रेरी, कोड को दोबारा इस्तेमाल करने का एक आसान तरीका है, हालांकि, स्क्रिप्ट शुरू होने में लगने वाला समय थोड़ा बढ़ जाता है. यह देरी ज़्यादा चलने वाली स्क्रिप्ट (जैसे, यूटिलिटी स्क्रिप्ट) Google Drive में मौजूद फ़ाइलें हटानी होंगी. हालांकि, ऐसा क्लाइंट-साइड के लिए किया जा सकता है HTML सेवा के ऐसे यूज़र इंटरफ़ेस जो दोहराए जाते हैं, शॉर्ट रनिंग google.script.run तो इस देरी का असर हर कॉल पर पड़ेगा. इस समस्या की वजह से, लाइब्रेरी को ऐड-ऑन में बहुत कम इस्तेमाल होता है और शायद आप इन्हें नॉन-ऐड-ऑन स्क्रिप्ट में इस्तेमाल न करें. इन स्क्रिप्ट में बहुत ज़्यादा google.script.run कॉल होती हैं.

कैश सेवा का इस्तेमाल करना

कैश मेमोरी सेवा का इस्तेमाल किया जा सकता है स्क्रिप्ट के एक्ज़ीक्यूशन के बीच संसाधनों को कैश मेमोरी में सेव करने के लिए. डेटा को कैश मेमोरी में सेव करके, वह संख्या जितनी बार या आवृत्ति से आपको डेटा लाना है. उस स्थिति के बारे में सोचें जहां example.com पर आपके पास ऐसा आरएसएस फ़ीड है जिसमें 20 मिनट लगते हैं सेकंड तक पहुंच सकता है और आपको औसत अनुरोध पर ऐक्सेस में तेज़ी लाना है. कॉन्टेंट बनाने नीचे दिया गया उदाहरण दिखाता है कि इस तक तेज़ी से ऐक्सेस करने के लिए कैश सेवा का इस्तेमाल कैसे करें डेटा शामिल है.

  function getRssFeed() {
    var cache = CacheService.getScriptCache();
    var cached = cache.get("rss-feed-contents");
    if (cached != null) {
      return cached;
    }
    // This fetch takes 20 seconds:
    var result = UrlFetchApp.fetch("http://example.com/my-slow-rss-feed.xml");
    var contents = result.getContentText();
    cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
    return contents;
  }

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