इस दस्तावेज़ में उन सबसे सही तरीकों की जानकारी दी गई है जो परफ़ॉर्मेंस को बेहतर बनाने में आपकी मदद करेंगी आपकी स्क्रिप्ट में से.
अन्य सेवाओं पर कॉल करने की संख्या कम करना
अपनी स्क्रिप्ट में 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).setBackgrounds(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 मिनट लगेंगे.