2013-01-15 15 views
5

मैं एक कस्टम स्प्रेडशीट बनाने के लिए Google Apps स्क्रिप्ट का उपयोग कर रहा हूं। स्क्रिप्ट की प्रतिपादन गति को बेहतर बनाने के लिए, मैं पहले आउटपुट मानों की एक सरणी बनाता हूं और फिर स्प्रेडशीट को एक साथ बनाने के लिए setValues() का उपयोग करता हूं।मैं Google Apps स्क्रिप्ट में setValues ​​का उपयोग करके मूल्यों को कैसे मास्क कर सकता हूं?

जब मैं setFormulas() साथ स्प्रेडशीट में करने के लिए सूत्रों को जोड़ने का प्रयास यह रूप में अच्छी तरह अपने सभी मूल्यों को अधिलेखित करता है। तो अब मेरे पास एक मामला है जहां setValues() मेरे सूत्रों को ओवरराइट करता है और setFormulas() मेरे मानों को ओवरराइट करता है।

वहाँ एक रास्ता तो यह है कि उन तत्वों डेटा पहले से ही ओवरराइट नहीं करेगी स्प्रेडशीट में मैं अपने उत्पादन सरणी में विशिष्ट तत्वों के लिए एक मास्किंग मान निर्दिष्ट कर सकते है?

आदर्श रूप में मैं इस मास्किंग मूल्य के लिए उत्पादन सरणी के प्रत्येक तत्व को प्रारंभ होगा, तो केवल गैर नकाबपोश तत्वों स्प्रेडशीट में प्रकट होंगे।

उत्तर

0

दुर्भाग्यवश setValues() या setFormulas() विधि में मास्किंग के लिए समर्थन नहीं है। यदि setValues() विधि को कोई सूत्र दिया गया है, तो इसे सही तरीके से सेट करना चाहिए, इसलिए आप एक ही कॉल में setValues() दोनों मानों और सूत्रों को सेट करने में सक्षम हो सकते हैं।

range.setValues([['foo', '=LEN("bar")']]); 
+0

यह नई Google स्प्रेडशीट में काम नहीं करता है। क्या कोई और काम है? फॉर्मूला के रूप में सब कुछ लिखना उपयोगकर्ताओं को समाप्त करने के लिए बहुत उपयोगी नहीं है। – fooby

3

सूत्रों के लिए setValues ​​() का उपयोग करके Google के माध्यम से इसे ढूंढने वाले किसी भी व्यक्ति के लिए अब नई चादरों में काम करना प्रतीत होता है।

अधिक विशेष रूप से, मैं सूत्रों शीट पर काम करने के बाद में वापस डाल करने के लिए इस तरह कोड का उपयोग कर रहा:

function setValuesAndFormulas() { 
    var sheet = SpreadsheetApp.getActive().getActiveSheet(); 
    var range = sheet.getDataRange(); 
    var values = range.getValues(); 
    var formulas = range.getFormulas(); 

    for (var i = 0; i < values.length; i++) { 
    for (var j = 0; j < values[i].length; j++) { 
     if (formulas[i][j].charAt(0) == "=") { 
     values[i][j] = formulas[i][j]; 
     } 
    } 
    } 

    range.setValues(values); 
} 

आशा है कि मदद करता है!

+1

धन्यवाद, यह वही है जो मुझे चाहिए! एक बात, मुझे नहीं लगता कि हमें 'if (formulas [i] [j] .charAt (0) == "=")' की जांच करने की आवश्यकता है, 'केवल जांच कर सकते हैं कि' if (सूत्र [i] [j]) ' , सही? –

+0

यकीन नहीं है, यह एक लंबा समय रहा है क्योंकि मुझे ऐसा करने की आवश्यकता है। यदि आप इसे काम करते हैं, तो मेरा जवाब संपादित करने के लिए स्वतंत्र महसूस करें :) –

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