Я сделал версию кодовых имен в Google Sheets: https://docs.google.com/spreadsheets/d/1TwxRIrHxPffn6WC357ioOVbE3SLxv5B8ws6IuHHVRfU
Это было очень неуклюже в течение долгого времени, потому что у меня не было настроено ни одного макроса. Сейчас я пытаюсь автоматизировать то, что, по моему мнению, является последним неуклюжим интерфейсом: раскрыть, к какому цвету принадлежало определенное слово.
Я бы хотел сказать пользователям:
- Щелкните по угадываемому слову
- Нажмите 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».) Не уверен, будет ли это актуально или нет.