Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌工作表查询功能-如何引用活动工作表/选项卡名称?_Google Apps Script_Google Sheets_Google Sheets Formula - Fatal编程技术网

Google apps script 谷歌工作表查询功能-如何引用活动工作表/选项卡名称?

Google apps script 谷歌工作表查询功能-如何引用活动工作表/选项卡名称?,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,这看起来很简单,但我无法让它工作。我搜索了很多文章,但没有找到雪茄。我编写代码为我们所有的经理制作一个标签,效果很好。现在,我想使用查询功能从第一个选项卡中为每个经理细分数据,该选项卡包含所有经理的数据。但是,我不想在每个选项卡上的每个查询函数中键入每个管理器名称,而是希望引用我为每个管理器创建的工作表/选项卡名称 这项工作: =QUERY(StaffDetail!A1:E338,"SELECT B,C,E,A WHERE A = 'Doe, Jane'",1) 我尝试将代

这看起来很简单,但我无法让它工作。我搜索了很多文章,但没有找到雪茄。我编写代码为我们所有的经理制作一个标签,效果很好。现在,我想使用查询功能从第一个选项卡中为每个经理细分数据,该选项卡包含所有经理的数据。但是,我不想在每个选项卡上的每个查询函数中键入每个管理器名称,而是希望引用我为每个管理器创建的工作表/选项卡名称

这项工作:

=QUERY(StaffDetail!A1:E338,"SELECT B,C,E,A WHERE A = 'Doe, Jane'",1)
我尝试将代码放入脚本编辑器中,创建一个调用工作表名称的函数,然后将其放入查询公式中;但它不起作用

function sheetName() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}
不起作用:

=QUERY(StaffDetail!A1:E338,"SELECT B,C,E,A WHERE A = sheetName()",1)
我发现以下错误:

我不明白为什么它不起作用。我读了一些间接的和其他的,但这是在同一张纸上,所以我不认为我会需要它?感谢您的帮助。谢谢大家!

解释/问题:
  • 自定义函数返回
    工作表
    ,但查询公式接受
    “工作表”

  • 我尝试了多种方法,但似乎只起作用(串联也起作用)

解决方案: 两项修改:

将自定义公式更改为:

function sheetName() {
  return `'${SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()}'`;
}
=QUERY(StaffDetail!A1:E338, CONCAT("SELECT B,C,E,A WHERE A =", sheetName()),1)
假设
Sheet1
是活动工作表,则返回
'Sheet1'

将您的谷歌表单公式更改为:

function sheetName() {
  return `'${SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()}'`;
}
=QUERY(StaffDetail!A1:E338, CONCAT("SELECT B,C,E,A WHERE A =", sheetName()),1)


参考文献:

function sheetName() {
  return `'${SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()}'`;
}
=QUERY(StaffDetail!A1:E338, CONCAT("SELECT B,C,E,A WHERE A =", sheetName()),1)

我曾经让函数return
“Sheet”

非常完美!谢谢你,马里奥斯。为了确保我理解-因为使用函数的公式将其视为字符串,所以需要让GAS中的函数也将其视为字符串?通过在函数中添加tic标记,将其转换为字符串。我认为这很精彩,你为我节省了很多时间。再次感谢你@凯伦很高兴它解决了你的问题。自定义函数返回字符串,但返回方式不正确。它必须是
'sheet'
而不是
sheet
,但两者都是字符串。感谢您的澄清,Marios!