google apps script - que - ¿Cómo crear atajos de teclado personalizados para las funciones de script de la aplicación Google?
lenguaje google apps script (9)
¡Una solución ha sido publicada en el número 306 ! Para los perezosos, aquí está:
El nuevo modo IFRAME en HtmlService permite que los códigos de clave pasen a los complementos ...
$(document).keydown(function(e){
//CTRL + V keydown combo
if(e.ctrlKey && e.keyCode == 86){
$( ''#output'' ).html("I''ve been pressed!");
}
})
Primero debe hacer clic / activar la barra lateral para que eso suceda.
Estoy tratando de tener una idea de la viabilidad de reemplazar algunas de mis hojas de cálculo de Microsoft Excel con Google Docs Spreadsheets. ¿Cómo puedo crear un atajo de teclado personalizado para una función de script de la aplicación google en una hoja de cálculo de Google Docs? Esto es algo que hago comúnmente con VBA y Excel.
Apps Script solo expone eventos del lado del servidor . Desafortunadamente, no puedes registrar eventos del lado del cliente como golpes de teclado hoy. Registre un problema en nuestro rastreador de problemas
Buenas noticias :) Puede lograr atajos de teclado personalizados para las funciones de script de la aplicación de Google siguiendo los siguientes sencillos pasos:
- En la interfaz de usuario de Hojas de cálculo de Google, seleccione Herramientas> Macros> Grabar macro .
- Registra cualquier acción. Por ejemplo, cambie el fondo de color en A1. Presione Guardar .
- Guárdelo con un título aleatorio y el atajo preferido. Puedes cambiarlo más tarde .
- Seleccione Tools> Script editor para abrir el script vinculado a la hoja en el editor de Apps Script.
- En la nueva pestaña del editor, seleccione Ver> Mostrar archivo de manifiesto
- TA - DÁ! : D Cambiar el valor de functionName al deseado;)
Recuerde que las funciones macro no deben tomar argumentos ni devolver ningún valor. Más información en https://developers.google.com/apps-script/guides/sheets/macros#importing_functions_as_macros
Como dice @Arun, esto aún no es compatible. Vea y protagonice este problema .
Estoy luchando con un problema similar y aunque todavía no lo he resuelto, creo que se puede encontrar un camino por delante con este controlador de eventos de pulsación de tecla en Class Textbox
No sé si esto soluciona el problema del lado del servidor solo que Arun señaló, pero estoy seguro que sí. ¡Por favor, siéntase libre de corregir mi razonamiento antes de perder demasiado tiempo intentando esto! :)
Muy recientemente (abril de 2018) Google lanzó un grabador de macros que incluye una forma de asignar un atajo de teclado para disparar una macro y una forma de importar scripts existentes como macros. Ver las macros de Hojas de cálculo de Google
NOTA: Esta característica se está lanzando actualmente, por lo que podría tomar algunas semanas para estar disponible para todos. En mi caso, estaba disponible primero en mi cuenta personal de Google y desde ayer está disponible en una de mis cuentas de G Suite.
Para resumir: escriba un servicio html que utilice un controlador de eventos de pulsación de teclas para capturar eventos de pulsación de tecla y los compara con los accesos directos de teclas rápidas que desea, luego llama a la subruta apropiada del servidor en el script de aplicaciones para alinear las pulsaciones de teclas, formato o cambios en el documento
En lo que respecta a la viabilidad, no es tan fácil como la vba con la que ya estás familiarizado, pero una vez que superas la forma diferente de hacer las cosas, no es tan terriblemente difícil.
Simplemente actualizando, ahora es posible la solución alternativa que The Guy mencionó, a través de IFRAME, puede crear una barra lateral, un STUB solo para ingresar comandos de teclado, tratarlos con jquery y ejecutar la función apropiada, ya usando esto.
Una solución posible para esto sería dedicar una columna para "activar texto", definir diferentes disparadores basados en texto para cada acción que intenta realizar, y luego crear una función que verifique el valor y realice una acción basada en el " activar el texto ". A continuación, puede establecer un activador de evento onEdit en los activadores del proyecto en "Recursos" en el editor de secuencia de comandos para su función de tecla de acceso directo.
El mayor inconveniente de este enfoque es que toma (al menos para mí) aproximadamente 7 segundos completos para que el desencadenador onEdit capte el cambio y realice la actualización. Si necesita algo para procesar más rápidamente, puede que tenga que buscar un enfoque alternativo.
He proporcionado un ejemplo a continuación sobre cómo cambiar el color de la fila en función del texto de activación en una columna designada como "activador". Puede usar esto para hacer cualquier cosa que se pueda hacer en la hoja a través de scripts, como cambiar valores, establecer el peso de la fuente, copiar datos o incluso ejecutar otras funciones después de verificar la entrada de texto de activación.
/*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();
}
}
}