如何在我的google-apps-script中使用动态变量创建QUERY函数

时间:2019-06-08 12:41:56

标签: google-apps-script

您好,SO社区,在此先感谢您的帮助。我正在为我的公司构建一些简化的自动销售报告,其中数据源植根于Google表格。我希望能够基于我的应用程序脚本中QUERY函数中的动态变量来自定义报告。我相信这是一个非常基本的答案,但是我有点像是一个使新手感到困惑的代码,并且没有受过轻松解决的教育。

在QUERY中,我要查找的变量在B列中,到目前为止,我只能在\ Artist Name \中手动输入该变量。我尝试使用各种引号和+插入动态var而不是Artist Name,但脚本运行后返回错误。

function exampleOfHowItCurrentlyWorks {

  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var setQuery = ss.getSheetByName('printLog').getRange('A1').setFormula('=QUERY(A1:I,"Select A,B Where B Contains \'Artist Name\' ",1)');

}

function exampleOfHowItShouldWork {

  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var artist1 = ss.getSheetByName('theme').getRange('B1').getValue();
  var setQuery = ss.getSheetByName('printLog').getRange('A1').setFormula('=QUERY(A1:I,"Select A,B Where B Contains \'artist1\' ",1)');

}

基本功能是我希望能够转到名为“主题”的工作表名称并将“ B1”范围更改为Michaelangelo,并且查询返回结果,其中B列包含Mihchaelangelo…

1 个答案:

答案 0 :(得分:0)

function exampleOfHowItShouldWork {
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var artist1 = ss.getSheetByName('theme').getRange('B1').getValue();
  var setQuery = ss.getSheetByName('printLog').getRange('A1')
    .setFormula('=QUERY(A1:I,"Select A,B Where B Contains \'' + artist1 + '\' ",1)');
}

使用不转义的单引号将字符串关闭,然后使用+将字符串连接在一起。

根据您执行此操作的原因(例如,如果您只是想让B1作为“搜索框”,请在其中输入名称),不使用Apps脚本通过表格进行操作可能会更容易:< / p>

=QUERY(A1:I, "Select A, B Where B contains '" & B1 & "'", 1)

其他工作表可以通过'theme'!B1访问。