2013-07-29 16 views
6

Sto cercando un modo per popolare a livello di programmazione un foglio di calcolo che filtra i dati da un altro foglio di calcolo in base all'utente connesso.La funzione 'query' del foglio di calcolo di Google può essere utilizzata nello script di app di Google?

Sono in grado di farlo utilizzando la funzione di query all'interno di un foglio di calcolo. MA, non riesci a trovare un modo per chiamare la funzione di query dallo script di app?

Questo può essere fatto? Gradirei codice di esempio. Grazie.

risposta

5

No, non esiste alcuna API per la funzione Query che consente di chiamarla da Google Apps Script. (Non c'è modo di chiamare QUALSIASI funzione di foglio di calcolo in questo modo, in effetti.)

È possibile ottenere alcune funzionalità simili senza scrivere tutto da soli, però. 2D Arrays Library include una varietà di funzioni "filtro" che consentono di recuperare le righe corrispondenti.

+0

Questo suona come qualcosa che dovrebbe fare il lavoro. Grazie! – awsamar

+0

Mogsdad, libreria di array utile ma non ancora efficace come la funzione di query. Sto cercando di utilizzare gli apis di visualizzazione/grafici per creare dashboard utente. Per personalizzare la dashboard, ho bisogno della possibilità di filtrare i dati dal foglio di calcolo in base all'utente connesso. Ma il filtro richiedeva il confronto di più colonne, che è facile nella funzione di ricerca '... dove col5 = "& cell1 &" o col6 = "& cell2 &". – awsamar

3

Forse, attraverso una formula è possibile ottenere qualcosa di quanto è necessario.

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

William, grazie per il suggerimento. Sto già utilizzando la 'Query' in una cella che viene aggiornata tramite lo script. Tuttavia, il comportamento non è esattamente come ho bisogno. Grazie comunque. – awsamar

7

Non so se v'è una restrizione che ...

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

Bene. Questo funziona per me, ma sembra incredibilmente brutto - come un sacco di soluzioni temporanee nelle app di Google. :-) –

+0

Come viene definito "sp" nella riga: var sheet = sp.insertSheet() e come si passa l'identità del foglio a questo processo? tramite il foglioID o il foglioURL – Calcutta

+0

var sp = SpreadsheetApp.openById ("********************"); – zizix

Problemi correlati