Искать элемент как «Панель инструментов» в скрипте Google лист - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь добавить опцию «Поиск элемента» на панели инструментов.По сути, у меня есть 6 разных вкладок в одном и том же листе Google, но количество элементов на каждом листе слишком много, и пользователи не могут его найти.

Есть ли способ добавить такой инструмент на панель инструментов, используяGoogle Script?

https://docs.google.com/spreadsheets/d/1lbfbMUhwKGG0CJ1tJuXVmwCRPAox_1dIATffhKVjkQM/edit?usp=sharing

Выше приведена ссылка на пример данных

Данные сгенерированы из API для системы рекламного сервера

Вмои реальные данные, что в столбце "Creative" содержится около> 1000 уникальных записей

Существует ли потенциальный способ размещения опции на панели инструментов, которая выполняет "творческую" поисковую работу, которая может сказать нам, что объявление "c6" былонаходится во «первой» вкладке, во второй строке ..

Но ищите эти элементы только в «скрытой» вкладке

Я не уверен, с чего мне начинать это, учитывая кратноевкладки

Может кто-нибудь дать мне предложения?

1 Ответ

0 голосов
/ 10 апреля 2019
  • Введите значение для поиска.
    • Вы хотите запустить 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
    

Я понял, как выше. Если мое понимание верно, как насчет этого примера сценария? Пожалуйста, подумайте об этом, как об одном из них.

Поток:

  1. При открытии электронной таблицы добавляется пользовательское меню.
  2. Запустите скрипт из «Показать подсказку» пользовательского меню. При этом открывается диалоговое окно.
  3. Введите текст поиска в поле ввода текста и нажмите кнопку «ОК».
  4. В скрипте строки ищутся с помощью TextFinder с использованием введенного текста поиска.
  5. Показать результат с помощью диалогового окна в качестве образца.

Пример сценария:

Перед запуском сценария установите для имени листа значение 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);
  }
}
Входные данные:

enter image description here

Выход:

enter image description here

Примечание:

  • Это пример сценария. пожалуйста, измените это для вашей ситуации.

Ссылки:

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!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...