10

में पैरामीटर ट्रिगर फ़ंक्शन को पैरामीटर कैसे पास करें, मैंने एक फ़ंक्शन बनाया है जो 30 मिनट के बाद प्रत्येक को ट्रिगर करता है, और मैं कुछ पैरामीटर पास करना चाहता हूं। मेरे पास एक लाइब्रेरी है जो carHistory देता है, और मेरी स्प्रैडशीट जहां से मैं लाइब्रेरी फ़ंक्शन कॉल करता हूं।लाइब्रेरी स्क्रिप्ट

Library1.gs

function carHistory(number,maker) 
{ 
// code logic 
} 

function startEvery30mins_CarHistory(number,maker) 
{ 
    //This function works 
    carHistory(number,maker); 

    // how to trigger this with parameter. 
    ScriptApp.newTrigger("carHistory") 
    .timeBased() 
    .everyMinutes(30) 
    .create(); 
} 

अपनी स्प्रैडशीट में

Code.gs:

function startOnce(){ 
    Library1.carHistory("US-xxx","Honda"); 
} 

function startEvery30mins(){ 
    Library1.startEvery30mins_CarHistory("US-xxx","Honda"); 
} 

संपादित:

Code.gs: मैं PropertiesService उपयोग करने की कोशिश, लेकिन अभी भी काम नहीं कर रहा

function startOnce(){ 
    var uProps = PropertiesService.getUserProperties(); 
    uProps.setProperty('Maker', 'Honda'); 
    uProps.setProperty('Number', 'US-xxx'); 

    Library1.carHistory(); 
} 

लाइब्रेरी:

function carHistory() 
    { 
     // Fetch Parametr 
     var getProps=PropertiesService.getUserProperties(); 
     var c_Maker= getProps.getProperty('Maker'); 
     var c_Number=getProps.getProperty('Number'); 
     // code logic 

    } 

function startEvery30mins_CarHistory() 
{ 
     ScriptApp.newTrigger("carHistory") 
     .timeBased() 
     .everyMinutes(30) 
     .create(); 
} 
+0

आप स्क्रिप्ट गुण उपयोग करने की कोशिश है उपयोगकर्ता गुणों के बजाय? https://developers.google.com/apps-script/reference/properties/properties-service#getScriptProperties() – Gerardo

+0

हाँ मैंने 'getScriptProperties()' और 'getUserProperties()' और दोनों लाइब्रेरी में काम नहीं कर रहे हैं। js –

उत्तर

6

पीआर ऑपरेटिंग एक साझा संसाधन नहीं हैं; प्रत्येक स्क्रिप्ट में अपने गुणों का सेट होता है जो अन्य स्क्रिप्ट के साथ साझा नहीं होते हैं। Resource Scoping में वर्णित अनुसार यह व्यवहार प्रभावित करता है कि आप लाइब्रेरी में गुणों को कैसे प्रबंधित कर सकते हैं।

एक साझा साझा संसाधन का अर्थ है कि लाइब्रेरी और समेत दोनों स्क्रिप्ट में केवल संसाधन के उनके उदाहरण के लिए अंतर्निहित पहुंच है। हालांकि, एक लाइब्रेरी उन पर साझा किए गए स्पष्ट कार्यों के द्वारा अपने साझा किए गए संसाधनों तक पहुंच प्रदान नहीं कर सकती है।

दूसरे शब्दों में; लाइब्रेरी का लाइब्रेरी फ़ंक्शंस द्वारा मुख्य स्क्रिप्ट पर साझा नहीं किया जा सकता है।

/** 
* Set name,value pairs of parameters for library function. 
* 
* @param {Object} parameters Object with named properties to be 
*        used as library function parameters. 
*/ 
function setParameters(parameters) { 
    var props = PropertiesService.getUserProperties(); 
    for (var key in parameters) { 
    var value = parameters[key]; 
    props.setProperty(key, value); 
    } 
} 

आप इस तरह उसका प्रयोग करेंगे:

यह समारोह अपने पुस्तकालय ट्रिगर समारोह के लिए ऑपरेटिंग मानकों की स्थापना के लिए इस्तेमाल किया जा सकता

function startOnce(){ 
    var uProps = { 
    'Maker':'Honda', 
    'Number':'US-xxx' 
    }); 

    Library1.setParameters(uProps); 
    Library1.carHistory(); 
} 
+0

उत्तर के लिए धन्यवाद, इसलिए मूल रूप से प्रत्येक स्क्रिप्ट की अपनी संपत्ति होती है, लेकिन हम पैरामीटर भेज सकते हैं और उन्हें ला सकते हैं और PropertiesService के रूप में सेट कर सकते हैं। ऐसा लगता है कि प्रत्येक लाइब्रेरी में अपनी PropertiesService है और हमने उन्हें समान मान निर्धारित किए हैं –

संबंधित मुद्दे