将范围对象作为参数传递给Google Sheet中的QUERY函数

时间:2016-09-16 15:21:54

标签: google-sheets range

在Google表格中,我有这样的疑问:

= QUERY( Data!A1:M300, "select A,B,C,D where C <= date '" & TEXT(B1, "yyyy-MM-dd") & "' AND D >= date '" & TEXT(B1, "yyyy-MM-dd") & "'", 0)

我现在要做的是使QUERY函数的第一个参数动态化。为此我写了这个小函数:

function getDataRange(sheetName) {

  if (sheetName == "") {
    sheetName = SpreadsheetApp.getActiveSheet().getName()
  }

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName)

  if (sheet != null) {

    output = sheet.getDataRange().getValues();

  } else {

    output = SpreadsheetApp.getActiveSpreadsheet().getDataRange().getValues();

  }

  return output

}

现在,如果我将此函数作为第一个参数传递给QUERY,就像这样

= QUERY( getDataRange("Data"), "select A,B,C,D where C <= date '" & TEXT(B1, "yyyy-MM-dd") & "' AND D >= date '" & TEXT(B1, "yyyy-MM-dd") & "'", 0)

我收到此错误

"Unable to parse query string for Function QUERY parameter 2: NO_COLUMN: A"

我还没有找到将动态范围作为QUERY函数的第一个参数传递的方法,我非常感谢任何提示。

1 个答案:

答案 0 :(得分:0)

尝试将您的select子句更改为:

"select Col1, Col2, Col3, Col4 where Col3 <= date '" & TEXT(B1, "yyyy-MM-dd") & "' AND Col3 >= date '" & TEXT(B1, "yyyy-MM-dd") & "'"