- Введите значение для поиска.
- Вы хотите запустить Google Apps Script в строке меню.
- Поиск в столбце «A» для каждого листа с использованием значения поиска, и когда искомое значение найдено в столбце «A», он извлекает строку.
- Есть листы, которые вы не хотите использовать для поиска.
Вы хотите показать результат следующим образом.
Creative "C6" was found in "Second", "fifth" tab
Second Tab: Impression:100 / Click:100
Fifth Tab: Impression:100 / Click:100
Я понял, как выше. Если мое понимание верно, как насчет этого примера сценария? Пожалуйста, подумайте об этом, как об одном из них.
Поток:
- При открытии электронной таблицы добавляется пользовательское меню.
- Запустите скрипт из «Показать подсказку» пользовательского меню. При этом открывается диалоговое окно.
- Введите текст поиска в поле ввода текста и нажмите кнопку «ОК».
- В скрипте строки ищутся с помощью TextFinder с использованием введенного текста поиска.
- Показать результат с помощью диалогового окна в качестве образца.
Пример сценария:
Перед запуском сценария установите для имени листа значение 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);
}
}
Входные данные:
Выход:
Примечание:
- Это пример сценария. пожалуйста, измените это для вашей ситуации.
Ссылки:
Edit:
- Когда искомый текст не был найден, вы хотите показать «Объявление, которое вы только что искали, не существует, вернитесь и проверьте, нет ли опечаток!».
Чтобы отразить вышеуказанный запрос к сценарию, измените приведенный выше сценарий следующим образом.
От:
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!");
}