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

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

अन्य सेवाओं को कम से कम कॉल करना

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

शेयर की गई ड्राइव की मदद से साथ मिलकर काम करना

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

बैच ऑपरेशन का इस्तेमाल करना

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

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

इस उदाहरण में, पढ़ने और लिखने की प्रोसेस को बारी-बारी से किया गया है. इसलिए, यह तरीका सही नहीं है. इस तरह के तरीके से बचें:

// 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();
}

यह स्क्रिप्ट ठीक से काम नहीं कर रही है, क्योंकि यह लगातार 10,000 सेल में लिखती है. राइट-बैक कैश मेमोरी से मदद मिलती है, लेकिन बैचिंग कॉल ज़्यादा असरदार होते हैं:

// 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).setBackgrounds(colors);

अकुशल कोड को चलने में करीब 70 सेकंड लगते हैं, जबकि कुशल कोड को चलने में सिर्फ़ 1 सेकंड लगता है.

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

लाइब्रेरी, कोड को फिर से इस्तेमाल करने के लिए सुविधाजनक होती हैं. हालांकि, इससे स्क्रिप्ट के शुरू होने में लगने वाला समय बढ़ जाता है. यह देरी, क्लाइंट-साइड HTML सेवा के उन यूज़र इंटरफ़ेस में दिखती है जो बार-बार और कम समय के लिए google.script.run कॉल करते हैं. ऐड-ऑन में लाइब्रेरी का इस्तेमाल कम करें. साथ ही, ऐसी स्क्रिप्ट में इनका इस्तेमाल न करें जो कई google.script.run कॉल करती हैं.

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

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

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 सेकंड तक इंतज़ार करना होगा. इसके बाद, आइटम के खत्म होने तक, उसे तेज़ी से ऐक्सेस किया जा सकता है.