Ответ 1
Приложения Script раскрывают события на стороне сервера. К сожалению, сегодня вы не можете регистрировать события на стороне клиента, такие как нажатия клавиш. Пожалуйста, зарегистрируйте проблему в нашем отслеживании проблем
Я пытаюсь понять, как можно заменить некоторые из моих электронных таблиц Microsoft Excel с помощью электронных таблиц Google Doc. Как создать пользовательскую комбинацию клавиш для функции google app script в таблице документов Google? Это то, что я обычно делаю с VBA и Excel.
Приложения Script раскрывают события на стороне сервера. К сожалению, сегодня вы не можете регистрировать события на стороне клиента, такие как нажатия клавиш. Пожалуйста, зарегистрируйте проблему в нашем отслеживании проблем
Как говорит @Arun, это пока не поддерживается. Смотрите и представьте эту issue.
Решение опубликовано в вопрос 306! Для ленивых, вот он:
Новый режим IFRAME в HtmlService позволяет передавать коды ключей в надстройки...
$(document).keydown(function(e){
//CTRL + V keydown combo
if(e.ctrlKey && e.keyCode == 86){
$( '#output' ).html("I've been pressed!");
}
})
Нужно сначала нажать/активировать боковую панель, чтобы это произошло.
Просто обновление, теперь возможно обходное решение, которое Гай упомянул, через IFRAME, вы можете создать боковую панель, STUB только для ввода команд клавиатуры, обработки их с помощью jquery и запускать соответствующую функцию, используя это уже.
Одной из возможных задач для этого было бы выделение столбца для "триггерного текста", определение различных триггеров на основе текста для каждого действия, которое вы пытаетесь выполнить, а затем создать функцию, которая проверяет значение и выполняет действие, основанное на действии на "триггерном тексте". Затем вы можете установить триггер события onEdit в триггерах проекта в разделе "Ресурсы" в редакторе script для вашей функции горячих клавиш.
Самым большим недостатком этого подхода является то, что он (по крайней мере, для меня) занимает приблизительно 7 полных секунд для триггера onEdit, чтобы поймать изменение и выполнить обновление. Если вам нужно что-то обрабатывать быстрее, вам, возможно, придется искать альтернативный подход.
Ниже приведен пример, как изменить цвет строки на основе текста триггера в назначенном столбце "триггер". Вы можете использовать это, чтобы сделать все, что можно сделать на листе, используя скрипты, такие как значения изменения, установить вес шрифта, скопировать данные или даже запустить другие функции после проверки ввода текста триггера.
/*you will need to add an onEdit trigger to your project
for this to run when you edit the cell*/
//function to update row color using entered text in a specified "trigger" column
function hotKey(){
//get the cell you edited and the associated column and row number
var cell = sheet.getActiveCell();
var thisCol = cell.getColumn();
var thisRow = cell.getRow();
//set a range variable for the entire row
var colorRow = sheet.getRange(thisRow,thisCol,1,Cols);
//get the edited value for the cell as a string
var val = cell.getValue().toString();
//check that the edited cell is in the trigger column
if (thisCol = 1){
//update the row color based on the entered value
if(val == "g"){
colorRow.setBackground("#00ff00"); //sets row color to green
cell.clearContent(); //delete the trigger cell value
}else if(val == "r"){
colorRow.setBackground("#ff0000");
cell.clearContent();
}else if(val == "fd"){
colorRow.setBackground("#fff2cc");
cell.clearContent();
}else if(val == "pr"){
colorRow.setBackground("#ffff00");
cell.clearContent();
}else if(val == "cn"){
colorRow.setBackground("#6fa8dc");
cell.clearContent();
}
}
}
Я борюсь с подобной проблемой, и, тем не менее, я еще не получил много разрешений. Я думаю, что путь вперед можно найти через этот обработчик события нажатия Текстовое поле класса
Я не знаю, затронуло ли это проблему на стороне сервера только то, что указал Арун, но я уверен в этом. Пожалуйста, не стесняйтесь исправить мои рассуждения, прежде чем тратить слишком много времени на это!:)
Короче говоря: напишите html-службу, которая использует обработчик события нажатия клавиши для захвата событий нажатия клавиш и сравнивает их с ярлыками горячих клавиш, которые вы хотите, а затем вызывает соответствующую подпрограмму на стороне сервера в приложениях script для встраивания вызываемого для нажатия клавиш, изменения формата или документа.
Что касается жизнеспособности, не так просто, как vba, с которым вы уже знакомы, но как только вы пройдете другой способ делать что-то не так уж и тяжело.