我正在尝试在工具栏中添加“搜索项”选项。 基本上,我在同一个Google工作表中有6个不同的标签,但是每个工作表中的项目数太多,用户可能找不到。
是否可以使用Google表格脚本在工具栏中添加此类工具?
https://docs.google.com/spreadsheets/d/1lbfbMUhwKGG0CJ1tJuXVmwCRPAox_1dIATffhKVjkQM/edit?usp=sharing
上面是示例数据的链接
数据是从广告服务器系统的API生成的
在我的真实数据中,“创意”列包含大约1000多个唯一条目
在“创造性”搜索工作中,是否有可能将选项放置在工具栏中的方法,可以告诉我们创造性“ c6”在“第一”标签的第二行中找到。
但是只能在“未隐藏”标签中搜索这些项目
由于有多个标签,我不确定应该从哪里开始。
有人可以给我建议吗?
答案 0 :(得分:0)
您要显示如下结果。
Creative "C6" was found in "Second", "fifth" tab
Second Tab: Impression:100 / Click:100
Fifth Tab: Impression:100 / Click:100
我像上面那样理解。如果我的理解是正确的,那么该示例脚本如何?请只考虑其中之一。
在运行脚本之前,请将工作表名称设置为sheets
。
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Custom Menu')
.addItem('Show prompt', 'showPrompt')
.addToUi();
}
function showPrompt() {
// Please set the sheet name you want to use for searching.
var sheets = ["first", "second", "third", "fourth", "fifth", "sixth"];
var ui = SpreadsheetApp.getUi();
var res = ui.prompt('Sample', 'Input search text:', ui.ButtonSet.OK_CANCEL);
var button = res.getSelectedButton();
if (button == ui.Button.OK) {
var findText = res.getResponseText();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var header = "Creative \"" + findText + "\" was found in ";
var values = "";
var object = sheets.reduce(function(obj, sheetName, i) {
var sheet = ss.getSheetByName(sheetName);
var textFinder = sheet.createTextFinder(findText);
var searchedRows = textFinder.findAll().reduce(function(ar, e) {
if (e.getColumn() == 1) {
var row = sheet.getRange(e.getRow(), 1, 1, sheet.getLastColumn()).getValues()[0];
if (row[0] === findText) {
ar.push(row);
header += '"' + sheetName + '"' + (i == sheets.length - 1 ? " tab\n" : ", ");
values += sheetName + " Tab: Impression:" + row[1] + " / Click:" + row[2] + "\n";
}
}
return ar;
}, []);
if (searchedRows.length > 0) obj[sheetName] = searchedRows;
return obj;
}, {});
Logger.log(object);
ui.alert(header + values);
}
}
输入:
输出:
为了将您的上述请求反映到脚本中,请按如下所示修改上面的脚本。
ui.alert(header + values);
if (Object.keys(object).length > 0) {
ui.alert(header.slice(0, -2) + " tab\n" + values);
} else {
ui.alert("The creative you just searched for does not exist, please go back and check if there is any typo!");
}