2013-07-29 33 views
6

Giriş yapmış olan kullanıcıya göre başka bir elektronik tablodan veri filtreleyen bir elektronik tabloyu programlı olarak doldurmanın bir yolunu arıyorum.Google spreadsheet 'query' işlevi google apps komut dosyasında kullanılabilir mi?

Bunu e-tablo içindeki sorgu işlevini kullanarak yapılandırabilirim. AMA, uygulamalar komut dosyasından sorgu işlevini çağırmanın bir yolunu belirleyemiyor mu?

Bu yapılabilir mi? Örnek kod için teşekkür ederiz. Teşekkürler.

cevap

5

Hayır, Sorgu işlevi için Google Apps Komut Dosyası'ndan çağrılmasına izin veren bir API yok. (Bu şekilde HERHANGİ bir elektronik tablo işlevini çağırmanın hiçbir yolu yoktur.)

Bazı benzer işlevleri, kendiniz yazmadan yazabilirsiniz. 2D Arrays Library, eşleşen satırları almanızı sağlayan çeşitli "filtre" işlevlerini içerir.

+0

. Teşekkürler! – awsamar

+0

Mogsdad, Arrays Kütüphanesi yararlı ancak yine de sorgu işlevi kadar etkili değil. Kullanıcı gösterge panoları oluşturmak için görselleştirme/grafikler apis kullanmaya çalışıyorum. Gösterge tablosunu kişiselleştirmek için, giriş yapan kullanıcı temelinde verileri elektronik tablodan filtrelemeye ihtiyacım var. Ancak, filtre sorgu işlevinde kolay olan çoklu sütunları karşılaştırmak için gerekliydi ... ... burada col5 = "& cell1 &" veya col6 = "& cell2 &". – awsamar

3

Belki de bir formül aracılığıyla ihtiyacınız olandan daha fazlasını yapabilirsiniz.

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, Öneriniz için teşekkürler. Komut dosyası aracılığıyla güncellenen bir hücrede zaten 'Sorgu' kullanıyorum. Ancak, davranış tam olarak ihtiyacım değil. Yine de teşekkürler. – awsamar

7

bu konuda bir kısıtlama olup olmadığını bilmiyorum ... Bu işi yapmak gereken bir şey gibi geliyor

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

Eh. Bu benim için çalışıyor, ancak Google uygulamalarında birçok geçici çözüm olarak inanılmaz derecede çirkin görünüyor. :-) –

+0

Satırda "sp" nasıl tanımlanır: var sheet = sp.insertSheet() ve sayfanın kimliğini bu işleme nasıl geçiririz? sheetID veya sheetURL aracılığıyla – Calcutta

+0

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

İlgili konular