2013-07-29 14 views
6

मैं एक स्प्रेडशीट प्रोग्रामेटिक रूप से पॉप्युलेट करने का एक तरीका ढूंढ रहा हूं जो लॉग इन उपयोगकर्ता के आधार पर किसी अन्य स्प्रेडशीट से डेटा फ़िल्टर करता है।क्या Google स्प्रेडशीट 'क्वेरी' फ़ंक्शन का उपयोग Google Apps स्क्रिप्ट में किया जा सकता है?

मैं स्प्रेडशीट के अंदर क्वेरी फ़ंक्शन का उपयोग करके ऐसा करने में सक्षम हूं। लेकिन, ऐप स्क्रिप्ट से क्वेरी फ़ंक्शन को कॉल करने का कोई तरीका जानने में असमर्थ?

क्या यह किया जा सकता है? नमूना कोड की सराहना करेंगे। धन्यवाद।

उत्तर

5

नहीं, क्वेरी फ़ंक्शन के लिए कोई एपीआई नहीं है जो इसे Google Apps स्क्रिप्ट से कॉल करने की अनुमति देती है। (वास्तव में इस तरह से किसी भी स्प्रेडशीट फ़ंक्शन को कॉल करने का कोई तरीका नहीं है।)

आप इसे स्वयं लिखने के बिना कुछ समान कार्यक्षमता प्राप्त कर सकते हैं। 2D Arrays Library में कई "फ़िल्टर" फ़ंक्शंस शामिल हैं जो आपको मिलान पंक्तियों को पुनर्प्राप्त करने देते हैं।

+0

यह कुछ ऐसा है काम करना चाहिए जैसा लगता है। धन्यवाद! – awsamar

+0

मोग्सडाड, Arrays लाइब्रेरी उपयोगी लेकिन अभी भी क्वेरी फ़ंक्शन के रूप में प्रभावी नहीं है। मैं उपयोगकर्ता डैशबोर्ड बनाने के लिए विज़ुअलाइज़ेशन/चार्ट एपिस का उपयोग करने की कोशिश कर रहा हूं। डैशबोर्ड को वैयक्तिकृत करने के लिए, मुझे लॉग इन उपयोगकर्ता के आधार पर स्प्रेडशीट से डेटा फ़िल्टर करने की क्षमता चाहिए। लेकिन, फ़िल्टर को कई कॉलम की तुलना करने की आवश्यकता है जो क्वेरी फ़ंक्शन में आसान है '... जहां col5 = "& cell1 &" या col6 = "& cell2 &"। – awsamar

3

शायद, एक सूत्र के माध्यम से आप अपनी आवश्यकता से कुछ प्राप्त कर सकते हैं।

function testFormula() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[1]; 
    var cell = sheet.getRange("A1"); 
    cell.setFormula("=QUERY('Sheet0'!A1:B5;\"SELECT A, B\"; 0)"); 
} 
+0

विलियम, सुझाव के लिए धन्यवाद। मैं पहले से ही एक सेल में 'क्वेरी' का उपयोग कर रहा हूं जो स्क्रिप्ट के माध्यम से अपडेट हो जाता है। हालांकि, व्यवहार बिल्कुल ठीक नहीं है कि मुझे कैसे चाहिए। हालांकि धन्यवाद। – awsamar

7

मैं नहीं जानता कि पर एक प्रतिबंध है या नहीं ...

function test() { 
    var req = query("=QUERY(shopT!B2:E; \"select min(E) where (B=3 or B=4 and D=2) group by C, D\")"); 

    Logger.log(req); 
} 

function query(request) { 
    var sheet = sp.insertSheet(); 
    var r = sheet.getRange(1, 1).setFormula(request); 

    var reply = sheet.getDataRange().getValues(); 
    sp.deleteSheet(sheet); 

    return reply; 
} 
+0

ठीक है। यह मेरे लिए काम करता है, लेकिन यह अविश्वसनीय रूप से बदसूरत दिखता है - Google Apps में बहुत सारे कामकाज के रूप में। :-) –

+0

लाइन में परिभाषित "एसपी" कैसा है: var sheet = sp.insertSheet() और हम इस प्रक्रिया में शीट की पहचान कैसे पास करते हैं? शीटआईडी या शीटURL – Calcutta

+0

var sp = spreadsheetApp.openById ("********************") के माध्यम से; – zizix

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