Google apps script 将项目搜索为一个";“工具条”;在谷歌表单脚本中
我正试图在工具栏中添加“搜索项目”选项。 基本上,我在同一个谷歌表单中有6个不同的标签,但每个表单中的项目太多,用户可能无法找到 有没有办法使用GoogleSheet脚本在工具栏中添加这样的工具 上面是指向示例数据的链接 数据由ad服务器系统的API生成 在我的真实数据中,“创造性”列有大约1000个以上的唯一条目 是否有一种潜在的方法可以将选项放在一个进行“创造性”搜索工作的工具栏中,告诉我们创造性的“c6”是在第二行的“第一”选项卡中找到的 但只在“未隐藏”选项卡中搜索这些项目 我不知道该从哪里开始。。给定多个选项卡 有人能给我提些建议吗?Google apps script 将项目搜索为一个";“工具条”;在谷歌表单脚本中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正试图在工具栏中添加“搜索项目”选项。 基本上,我在同一个谷歌表单中有6个不同的标签,但每个表单中的项目太多,用户可能无法找到 有没有办法使用GoogleSheet脚本在工具栏中添加这样的工具 上面是指向示例数据的链接 数据由ad服务器系统的API生成 在我的真实数据中,“创造性”列有大约1000个以上的唯一条目 是否有一种潜在的方法可以将选项放在一个进行“创造性”搜索工作的工具栏中,告诉我们创造性的“c6”是在第二行的“第一”选项卡中找到的 但只在“未隐藏”选项卡中搜索这些项目 我不知道该
- 输入搜索值。
- 您希望通过菜单栏运行Google Apps脚本
- 使用搜索值搜索每个工作表的“A”列,当在“A”列找到搜索值时,它检索该行。
- 有些工作表不想用于搜索
- 您希望如下所示显示结果
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);
}
}
输入:
输出:
注:
- 这是一个示例脚本。请根据您的情况修改此选项
- 当搜索到的文本未找到时,您希望显示“您刚才搜索的创意不存在,请返回并检查是否有任何打字错误!”
Creative "C6" was found in "Second", "fifth" tab
Second Tab: Impression:100 / Click:100
Fifth Tab: Impression:100 / Click:100
发件人:
致:
为了纠正你的情况,我可以问一下你的目标吗?1.当我看到您的共享电子表格时,我想您可能希望使用一个值搜索每列“A”(
Creative
)中的行。我的理解正确吗?2.你认为工具栏是什么?3.在标记中,使用“Javascript”。你想用不是谷歌应用脚本的Javascript实现这一点吗?4.你能提供你当前的脚本吗?5.“原始”的标签是什么?在实际的电子表格中,是否包含您不希望搜索的选项卡?我为我糟糕的英语水平道歉。你好,塔奈克,哦,你又来了!!我不明白当你说你的英语很差的时候,当你的句子很完美的时候,无论如何我记得你!你回答了我之前的问题,并且能够完美地完成任务……:)因此,对于这项任务,1)我试图搜索“创意”列中的项目,并返回“创意”列中的实际项目+印象+点击值(与该创意基本相邻的数值…)2)工具栏,如显示在谷歌工作表顶部的其中一个工具栏中。(在“数据”、“工具”旁边)3)否,通过谷歌表单应用程序脚本!(待续)。。5) RAW是原始数据,是所有单独选项卡的原点。(我没有把它包括在这里)是的,这是我不想被搜索的选项卡,因为那只是原始数据。4) 坦白地说,对于这个脚本,我没有专门为这个工具栏任务编写过,但是我有API调用、原始数据转换和拆分为单独的选项卡代码。。我们也应该研究一下这个代码吗?我真的不知道如何开始创建这个工具栏…谢谢你的快速回复。我理解你的目标如下。1.输入搜索值。您希望通过菜单栏运行Google Apps脚本。2.使用搜索值搜索每个工作表的“A”列,当在“A”列找到搜索值时,它检索该行。有些工作表不想用于搜索。你能告诉我我的理解是否正确吗?另外一个问题是,你想在哪里显示搜索结果?是的!!这是100%正确的。但对于结果部分,需要进行一些修改。。因此,结果将包括a)该项目包含在哪个选项卡中b)关联的印象值/单击每个选项卡中的值。嘿,塔奈克,我刚刚尝试过,这又完全符合预期!!唯一的问题是,当我们分配这个sheets变量时,[“first”、“second”、“third”、“fourth”、“fifth”、“sixth”],我们能让这个条目来自原始数据本身吗?因为只要有新条目,标签就会自动生成。没关系,我想!使用var sheets=new Array()var sheetss=SpreadsheetApp.getActiveSpreadsheet().getSheets();对于(var i=0;iHey Tanaike,对不起,我没有这个问题,我有另一个问题..如果没有找到创意,是否可以显示“错误:未找到”消息?@Jason1993感谢您的回复。我很高兴您的问题得到了解决。关于您的新问题,当Creative
列中没有值时,不会发生错误。如果您想使用其他格式的数据,能否将其作为新问题发布?因为一个问题应该有一个答案。此时,请关闭此问题uestion。这样,其他用户可以将您的问题视为已解决的问题。如果您可以合作解决您的问题,我很高兴。嘿,Tanaike,我的意思是,当您搜索的创意名称在任何工作表中都不存在时,请提示消息“creative Not Found!”(基本上,不一定是错误,但如果
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!");
}