Макрос Google Sheets, чтобы щелкнуть ячейку и выполнить поиск / замену ячейки над ней ИЛИ отправить нажатие клавиш - PullRequest
0 голосов
/ 26 апреля 2020

Я сделал версию кодовых имен в Google Sheets: https://docs.google.com/spreadsheets/d/1TwxRIrHxPffn6WC357ioOVbE3SLxv5B8ws6IuHHVRfU

Это было очень неуклюже в течение долгого времени, потому что у меня не было настроено ни одного макроса. Сейчас я пытаюсь автоматизировать то, что, по моему мнению, является последним неуклюжим интерфейсом: раскрыть, к какому цвету принадлежало определенное слово.

Я бы хотел сказать пользователям:

  1. Щелкните по угадываемому слову
  2. Нажмите Ctrl + Alt + Shift + 2, чтобы активировать макрос «раскрытия», который будет:
    a. Выберите ячейку над выбранной в данный момент
    b. Удалите звездочку, которая является первым символом ячейки «выше»

Я рассмотрел использование либо поиска и замены для замены «*» [ничто], но средство записи макросов этого не делает t обрабатывать это с помощью относительной ячейки.

Я также рассмотрел использование «F2» для редактирования ячейки, «Home» для перехода в начало, «Delete» для удаления первого символа и «Enter» msgstr "ключ для сохранения нового значения. Проблема в том, что макрос записывает только фактическое введенное значение (то есть: «go до одной ячейки», «установите его на СИНИЙ»), а не шаги, предпринятые для ввода этого значения (то есть: «go до одной ячейки» ", нажмите F2, Домой, Удалить, Ввести)

Я открыт для любого из них, хотя кажется, что второй вариант более вероятен.

Я сделал немного чтения и вижу, что существует такая вещь, как «event.key» и «event.code» (за https://keycode.info), но я не уверен, как включить его в мой макрос и я вижу на удивление мало совпадений в поиске Google по этим терминам во всем, что связано с макросами Sheets.

Вот код макроса в его нынешнем виде - проблема в том, что он явно устанавливает "СИНИЙ" в качестве нового значения, применяю ли я этот макрос к ячейке, которая начиналась как "* СИНИЙ" или "* КРАСНЫЙ".

function RevealColor() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(-1, 0).activate();
  spreadsheet.getCurrentCell().setValue('BLUE');
  spreadsheet.getCurrentCell().offset(1, 0).activate();
};

В псевдокоде вот что я хотел бы сделать:

function RevealColor() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(-1, 0).activate();
  event.key(F2)       ## F2 = Cursor to the Fx bar
  event.key(Home)     ## Home = Cursor to the left of the cell contents
  event.key(Delete)   ## Delete = Delete left-most character
  event.key(Enter)    ## Enter = commit contents of Fx line into the cell
                      ## spreadsheet.getCurrentCell().setValue('BLUE'); - do NOT explicitly set cell to "BLUE"
  spreadsheet.getCurrentCell().offset(1, 0).activate();
};

Мне просто не хватает опыта, чтобы сделать это (именно поэтому я работаю в Google листе с на первом месте!). Пожалуйста, помогите мне и не стесняйтесь использовать эту замечательную версию отличной игры.

Наконец, одним из возможных осложняющих факторов является то, что я точно не знаю названия вкладки, которая будет активной. Даже если пользователь не изменит его, вкладка # будет зависеть от того, сколько в настоящее время активных вкладок (например, «Копия новой игры 1, Копия новой игры 2 и т. Д. c».) Не уверен, будет ли это актуально или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...