it-swarm.dev

Come creare scorciatoie da tastiera personalizzate per le funzioni di script app google?

Sto cercando di capire come è possibile sostituire alcuni dei miei fogli di calcolo Microsoft Excel con i fogli di lavoro di Google Documenti. Come posso creare una scorciatoia da tastiera personalizzata per una funzione di script app google in un foglio di calcolo di Google Documenti? Questo è qualcosa che faccio comunemente con VBA ed Excel.

43
User

Apps Script espone solo eventi lato server . Sfortunatamente, non puoi registrare eventi lato client come i colpi di tastiera oggi. Si prega di registrare un problema nel nostro issue tracker

19
Arun Nagarajan

Ora supportato in Fogli (vedere https://issuetracker.google.com/issues/36752620 ), ma non ancora in Documenti. Visualizza e visualizza/ https://issuetracker.google.com/issues/36752620 per il supporto di Documenti

10
studgeek

Molto recentemente (aprile 2018) Google ha lanciato un registratore di macro che include un modo per assegnare una scorciatoia da tastiera per attivare una macro e un modo per importare gli script esistenti come macro. Vedi Fogli Google Fogli

NOTA: questa funzione è attualmente in fase di sviluppo, quindi potrebbero essere necessarie poche settimane per essere disponibili a tutti. Nel mio caso era disponibile prima sul mio account Google personale e da ieri è disponibile su uno dei miei account G Suite.

9
Rubén

Una soluzione è stata pubblicata su issue 306 ! Per i pigri, eccolo qui:

La nuova modalità IFRAME in HtmlService consente di passare i codici chiave ai componenti aggiuntivi ...

$(document).keydown(function(e){
  //CTRL + V keydown combo
  if(e.ctrlKey && e.keyCode == 86){
    $( '#output' ).html("I've been pressed!");
  }
})

È necessario fare clic su/attivare la barra laterale prima che ciò accada.

5
John Targaryen

Semplicemente aggiornando, ora è possibile la soluzione che The Guy ha menzionato, tramite IFRAME, è possibile creare una barra laterale, uno STUB solo per inserire comandi da tastiera, trattarli con jquery ed eseguire la funzione appropriata, già utilizzata da questo.

2
Kriggs

Ottime notizie :) È possibile ottenere scorciatoie da tastiera personalizzate per le funzioni di script app di Google seguendo i seguenti semplici passaggi:

  1. Nell'interfaccia utente di Fogli Google, seleziona Strumenti> Macro> Registra macro.
  2. Registra qualsiasi azione. Ad esempio, cambia lo sfondo del colore in A1. Premere Salva.
  3. Salvalo con un titolo casuale e la scorciatoia preferita. Puoi cambiarlo più tardi.
  4. Seleziona Strumenti> Editor script per aprire lo script associato al foglio nell'editor Script di app.
  5. Nella nuova scheda dell'editor, seleziona Visualizza> Mostra file manifest
  6. TA - DÁ! : D Cambia il valore di functionName su quello desiderato;)

Ricorda che le funzioni macro non dovrebbero accettare argomenti e non restituire valori. Maggiori informazioni su https://developers.google.com/apps-script/guides/sheets/macros#importing_functions_as_macros

2
urpi5

Una possibile soluzione per questo sarebbe dedicare una colonna per "trigger testo", definire diversi trigger basati sul testo per ogni azione che si sta tentando di eseguire, quindi creare una funzione che controlli il valore ed esegua un'azione basata su " trigger testo ". È quindi possibile impostare un trigger di evento onEdit nei trigger del progetto in "Risorse" nell'editor di script per la funzione hotkey. 

Il più grande svantaggio di questo approccio è che ci vogliono (almeno per me) circa 7 secondi completi per il trigger onEdit per prendere la modifica ed eseguire l'aggiornamento. Se hai bisogno di qualcosa da elaborare più rapidamente, potresti dover cercare un approccio alternativo.

Ho fornito un esempio qui sotto per come cambiare il colore della riga in base al testo del trigger in una colonna "trigger" designata. Puoi usarlo per fare tutto ciò che può essere fatto sul foglio tramite script come cambiare i valori, impostare il peso del font, copiare i dati o persino eseguire altre funzioni dopo aver controllato l'input di testo del trigger.

/*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();
    }
  }
}
1
MistyDawn

Sono alle prese con un problema simile e non ho ancora molto risolto, ma penso che si possa trovare una soluzione per questo gestore di eventi keypress in Class Textbox

Non so se questo aggira il problema del lato server solo che Arun ha sottolineato, ma sono sicuro che lo spero. Non esitate a correggere il mio ragionamento prima di perdere troppo tempo a provarlo! :)

0
The Guy

Per farla breve: scrivere un servizio html che utilizza un gestore di eventi key press per acquisire gli eventi di keypress e confrontarli con le scorciatoie da tastiera che si desidera, quindi chiama la sub routine appropriata sul lato server nello script apps per inline il comando di sequenze di tasti, formato o modifiche al documento.

Per quanto riguarda la redditività, non è facile come il vba con cui hai già familiarità, ma una volta superato il diverso modo di fare le cose non è poi così terribilmente difficile.

0
The Guy