我正在搜索页面上查找我的团队使用查询功能填写的通话记录。使事情变得复杂的是,在这些板子的帮助下,我能够生成以下功能,并且运行良好
Iferror(QUERY({'Jan 2020'!A3:R5000;'Feb 2020'!A3:R5000;'Mar 2020'!A3:R5000}, "select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10,Col11,Col12,Col13,Col14,Col15,Col16,Col17,Col18 WHERE "&TEXTJOIN(" and ", 1,IF(B5<>"", "Col1 >= date '"&B6&"'", ),IF(C5<>"", "Col1 <= date '"&C6&"'", ),IF(D5<>"", "Col3 = '"&D5&"'", ),IF(E5<>"", "Col4 = '"&E5&"'", ),IF(F5<>"", "Col5 = '"&F5&"'", ),IF(B8<>"", "Col6 = '"&B8&"'", ),IF(C8<>"", "Col9= '"&C8&"'", ),IF(D8<>"", "Col10= '"&D8&"'", ),
IF(E8<>"", "Col11= '"&E8&"'", )),1),"No Match")
我遇到的问题是我希望能够填写“搜索”区域,然后按一个按钮以激活要运行的功能。现在,每次我更改一个搜索词时,页面都会随着每次更改而更新。因此,如果要更改3个搜索范围,则必须等待工作表针对每次更改进行更新。如您所见,我们的团队平均每个月大约有4000次通话,因此读取脚本可能很耗时。
我以为我可以将查询简单地放入一个Scrip中,并通过“搜索”按钮激活该脚本。
我对脚本编写还相当陌生,并且对我在网上找到的内容感到困惑,因为在我看来,他们需要从头开始使用脚本语言来构建函数。
有没有一种方法可以简单地编写脚本来激活功能?
[我当时想将功能粘贴到需要激活它的单元格中,然后将清晰的脚本设置为“重置搜索”按钮是可能的。
您可以创建两个功能,并将它们分配给“搜索”和“清除”按钮。一种将公式粘贴到工作表中,另一种将公式替换为返回值的显示值。
首先,在脚本中创建两个函数,根据需要更改单元格和工作表名称字符串。
function searchFormula() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Copy of Exm") // change for the sheet name
var cell = sheet.getRange("A17") // change for the cell the function should be in
var formula = "Iferror(QUERY({'Jan 2020'!A3:R5000;'Feb 2020'!A3:R5000;'Mar 2020'!A3:R5000}, \"select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10,Col11,Col12,Col13,Col14,Col15,Col16,Col17,Col18 WHERE \"&TEXTJOIN(\" and \", 1,IF(B5<>\"\", \"Col1 >= date '\"&B6&\"'\", ),IF(C5<>\"\", \"Col1 <= date '\"&C6&\"'\", ),IF(D5<>\"\", \"Col3 = '\"&D5&\"'\", ),IF(E5<>\"\", \"Col4 = '\"&E5&\"'\", ),IF(F5<>\"\", \"Col5 = '\"&F5&\"'\", ),IF(B8<>\"\", \"Col6 = '\"&B8&\"'\", ),IF(C8<>\"\", \"Col9= '\"&C8&\"'\", ),IF(D8<>\"\", \"Col10= '\"&D8&\"'\", ),\r\nIF(E8<>\"\", \"Col11= '\"&E8&\"'\", )),1),\"No Match\")"
cell.setFormula(formula);
}
function clearFormula() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Copy of Exm")
// in the following line the 17 and the 1 should be replaced with the
// corresponding cell from the searchFormula() function
// for example A17 should be .getRange(17, 1 ...)
// and cell B20 should be .getRange(20, 2 ...) etc
var range = sheet.getRange(17, 1, sheet.getLastRow() - 1, sheet.getLastColumn() - 1)
range.setValues(range.getDisplayValues());
}
然后您可以将脚本分配给工作表用户界面中的按钮。
希望对您有帮助!
Range
| Apps Script | Google DevelopersRange
Range.setFormula()
Range.setFormula()