2013-07-29 112 views

回答

5

不,没有用于查询功能的API,它允许从Google Apps脚本调用它。 (实际上,没有办法以这种方式调用任何电子表格函数。)

虽然您可以自己写一些类似的功能,但无需自己写。 2D Arrays Library包含各种“过滤器”功能,可让您检索匹配的行。

+0

这听起来像是一件应该做的工作。谢谢! – awsamar

+0

Mogsdad,Arrays Library有用,但仍不如查询功能有效。我正在尝试使用可视化/图表API来构建用户仪表板。为了个性化仪表板,我需要能够根据登录用户过滤电子表格中的数据。但是,过滤器需要比较多列,这在查询函数'... where 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

William,感谢您的建议。我已经在通过脚本更新的单元格中使用了“查询”。但是,行为并不完全是我需要的。谢谢,不过。 – 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应用程序中有很多解决方法。 :-) –

+0

如何在行中定义“sp”:var sheet = sp.insertSheet()以及我们如何将工作表的标识传递给此过程?通过sheetID或sheetURL – Calcutta

+0

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

相关问题