可以在谷歌应用脚​​本中使用谷歌电子表格'查询'功能吗?

aws*_*mar 12 google-sheets google-apps-script google-query-language

我正在寻找一种以编程方式填充电子表格的方法,该电子表格根据登录用户过滤来自其他电子表格的数据.

我可以使用电子表格中的查询功能来完成此操作.但是,无法找到从应用程序脚本调用查询功能的方法?

可以这样做吗?非常感谢示例代码.谢谢.

小智 19

我不知道是否有限制......

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 出色地。这对我来说确实有用,但它看起来非常丑陋——就像谷歌应用程序中的很多解决方法一样。:-) (2认同)
  • varsheet = sp.insertSheet() 行中的“sp”是如何定义的,以及我们如何将工作表的标识传递给该进程?通过sheetID或sheetURL (2认同)

Mog*_*dad 7

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

但是,您可以获得一些类似的功能,而无需自己编写.该二维阵列库包括各种各样的"过滤器"功能,让您检索匹配的行.

  • 不对。请参阅[此处](https://developers.google.com/chart/interactive/docs/querylanguage#setting-the-query-in-the-data-source-url)。您可以通过“ScriptApp.getAccessToken()”提供的访问权限来使用“UrlFetchApp” (2认同)

wch*_*ito 6

也许,通过一个公式,你可以得到比你需要的东西.

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)");
}
Run Code Online (Sandbox Code Playgroud)