2012-06-05 18 views
8

मैं Google Apps स्क्रिप्ट का उपयोग करके टूलसेट बनाने में देख रहा था। इसके साथ समस्या यह है कि जहां तक ​​मैं कह सकता हूं केवल एक स्तर के संगठन की अनुमति देता है। आप स्टॉपवॉच नामक एक लाइब्रेरी बना सकते हैं और कॉल विधियों Stopwatch.start() और Stopwatch.stop() को कॉल कर सकते हैं जो बहुत अच्छा है।Google Apps स्क्रिप्ट लाइब्रेरी में नामस्थान जैसी संगठन बनाना

जो मुझे दिमाग में था, हालांकि कुछ ऐसा था जैसे Utils.Stopwatch()। Start() और Utils.Timer.start() आदि। मुझे लगता है कि यह जावास्क्रिप्ट में निश्चित रूप से संभव है, लेकिन ऐप्स स्क्रिप्ट को स्वतः पूर्ण करने के लिए एक निश्चित प्रारूप में इसे जोड़ने की जरूरत है। नीचे उदाहरण गलत करने का एक उदाहरण है (एक त्रुटि देता है) लेकिन शायद कुछ समय बचाता है। यह this आलेख पर आधारित है।

/** 
* A stopwatch object. 
* @return {Object} The stopwatch methods 
*/ 
function Stopwatch() 
{ 
    var current; 

    /** 
    * Stop the stopwatch. 
    * @param {Time} time in miliseconds 
    */ 
    function timeInSeconds_(time) 
    { 
    return time/1000; 
    } 

    return 
    { 
     /** 
     * Start the stopwatch. 
     */ 
     start: function() 
     { 
     var time = new Date().getTime(); 
     current = timeInSeconds_(time); 
     }, 

     /** 
     * Stop the stopwatch. 
     * @return {decimal} time passed since calling 
     * start (in seconds) 
     */ 
     stop: function() 
     { 
     var time = new Date().getTime(); 
     var difference = timeInSeconds_(time) - this.current; 
     return difference.toFixed(3); 
     } 
    }; 
} 

धन्यवाद

+0

मैं आप अनुमान लगा इस मामले में कोड कर रहे हैं हो सकता है 'Utils.Stopwatch() शुरू()' – Eduardo

+0

सही, मेरा बुरा –

उत्तर

3

आप यहाँ सुविधा अनुरोधों प्रस्तुत कर सकते हैं:

http://code.google.com/p/google-apps-script-issues/issues/list

+0

शायद मैं, मैं कर रहा हूँ सकता है हाँ है कि है। वास्तव में यह सुनिश्चित नहीं है कि यह कुछ अन्य लोगों को उपयोगी लगेगा या नहीं। यह सिर्फ बहुत ज्यादा उम्मीद कर सकता है। –

+5

मैंने एक बग रिपोर्ट बनाई है http://code.google.com/p/google-apps-script-issues/issues/detail?id=1389&thanks=1389&ts=1338940848 – Eduardo

0

OO उपयोग के बारे में क्या?

यह बहुत अच्छी तरह व्यवस्थित दिखता है और दस्तावेज़ को आसान बनाना आसान है।

/** 
* A stopwatch Class. 
* 
* @constructor 
*/ 
function Stopwatch() { 
    this.current = new Date().getTime(); 
} 

/** 
* Starts the stopwatch 
*/ 
Stopwatch.prototype.start = function(){ 
    this.current = new Date().getTime(); 
}; 

/** 
* Stops the stopwatch 
* 
* @return {number} Number of seconds since Stopwatch was started 
*/ 
Stopwatch.prototype.stop = function(){ 
    return ((new Date().getTime()) - this.current)/1000; 
}; 

उदाहरण। यदि आपकी lib को Utils के रूप में आयात किया गया है।

var s = new Utils.Stopwatch(); 
s.start(); 

// (...) 

Logger.log(s.stop()); 

पीएस: यह अनचाहे कोड है।

एक पक्ष प्रभाव आप एक से अधिक stopwatches हो सकता था के रूप में, हर एक को संभाल पाना खुद के स्थानीय चर JSDoc निम्नलिखित current

अद्यतन

इस हालांकि सही ढंग से दर्ज है यह वर्तमान में गूगल के साथ तरीकों स्वत: पूर्ण नहीं है एप्स स्क्रिप्ट

+0

कोड चलाता है (और साथ ही साथ अधिक कॉम्पैक्ट भी है) लेकिन यह ऐप स्क्रिप्ट पुस्तकालयों के काम को तोड़ देता है। वहां काम करने वाले स्वत: पूर्ण संस्करण के लिए आप एक कीवर्ड परिभाषित करते हैं जो ऐप स्क्रिप्ट लाइब्रेरी से जुड़ता है।एक उदाहरण होगा:। '// 'Utils' Utlis.Stopwatch() के लिए शुरू()' –

+0

खेद है कि मैं कई बार संपादित किया है और प्रतीक्षा करने के लिए .. बाकी 'वर समय = Utlis.Stopwatch था() .stop() ' यहां इसके बारे में एक अच्छा लेख है: [link] (http://googleappsdeveloper.blogspot.com/feeds/posts/default) मैं इकट्ठा करता हूं कि आप उपर्युक्त से अवगत हैं, क्या मेरा मतलब यह है कि 's.start()' या 'Utils.Stopwatch()। प्रारंभ करें()' उस मामले के लिए, स्वत: पूर्ण कार्य द्वारा नहीं उठाया जाता है। केवल कीवर्ड और एक कार्य नीचे। यदि आप स्वत: पूर्ण करने के लिए प्रारंभ() विधि प्राप्त कर सकते हैं, तो आपने मेरी समस्या हल कर ली है :) @Eduardo –

+0

आप ओओ का उपयोग कर रहे हैं Google Apps Script – Eduardo

2

यह अभी तक काम नहीं करता है लेकिन टीम इसके बारे में जानती है। तब तक आपको साइट पर अपने पुस्तकालयों को दस्तावेज करने की आवश्यकता होगी। मुझे लगता है कि आप विवरण में विधियों को भी डाल सकते हैं। यह वास्तव में नई सेवा के लिए एक महान शुरुआत है, लेकिन मैं आपके साथ लगभग 5 मिनट और पहले से ही अधिक चाहता था। ;)

+0

में स्वतः पूर्ण नहीं है, मुझे लगता है कि हमें बस तो इंतजार करो। –

3

जब तक ऐसी कार्यक्षमता Google द्वारा समर्थित रूप से समर्थित नहीं होती है, तो आप अपने कन्स्ट्रक्टर फ़ंक्शन के समान स्तर पर एनोटेशन के साथ खाली फ़ंक्शंस को परिभाषित कर सकते हैं। आप अपनी मूल कोड संरचना भी रख सकते हैं। यह संपादक में स्वतः पूर्ण करने में सक्षम होगा। इसके अलावा आपको अपनी लाइब्रेरी के लिए स्वतः जेनरेट किए गए दस्तावेज़ मिलेंगे, उदा। https://script.google.com/macros/library/versions/d/YOUR_PROJECT_KEY

उदाहरण:

/** 
* Constructor. 
* @constructor 
* @param {String} apiKey Doxument API key 
* @param {String} apiToken Doxument API token 
*/  
function DoxumentApi(apiKey, apiToken) { 
    // public api 
    return { 
     get: function(id, params) { 
      var httpResponse = execute('/docs/' + id + '.json?' + buildQuery(params)); 
      return parse(httpResponse); 
     } 
    } 
} 

/** 
* Get document record. 
* @param {String} id document id 
* @param {Object=} params optional. extra get params 
* @return {Object} Document object 
*/  
function get(id, params) {} 
+2

यह केवल शीर्ष स्तर पर विधि को स्वत: पूर्ण करेगा, न कि उपरोक्त पर जहां mothods परिभाषित किया गया है। मेरे उदाहरण के लिए यह Tools.start() के बजाय Tools.Stopwatch() प्रारंभ() होना चाहिए। –