web-dev-qa-db-fra.com

Comment créer des raccourcis clavier personnalisés pour les fonctions de script d'application Google?

J'essaie de comprendre la possibilité de remplacer certaines de mes feuilles de calcul Microsoft Excel par Google Doc Spreadsheets. Comment créer un raccourci clavier vers une fonction de script d'application Google dans une feuille de calcul Google Documents? C’est quelque chose que je fais couramment avec VBA et Excel.

43
User

Le script d'applications expose uniquement les événements côté serveur . Malheureusement, vous ne pouvez pas enregistrer les événements côté client tels que les coups de clavier aujourd'hui. Veuillez enregistrer un problème dans notre suivi des problèmes

19
Arun Nagarajan

Ceci est désormais pris en charge dans les feuilles (voir https://issuetracker.google.com/issues/36752620 ), mais pas encore dans Google Documents. Voir et star https://issuetracker.google.com/issues/36752620 pour le support de Google Documents

10
studgeek

Très récemment (avril 2018), Google a lancé un enregistreur de macros qui permet notamment d’attribuer un raccourci clavier pour déclencher une macro et d’importer des scripts existants sous forme de macros. Voir Macros Google Sheets

REMARQUE: Cette fonctionnalité est en cours de déploiement et pourrait donc prendre quelques semaines à être disponible pour tous. Dans mon cas, il était d'abord disponible sur mon compte Google personnel et depuis hier, il est disponible sur l'un de mes comptes G Suite.

9
Rubén

Une solution a été postée sur numéro 306 ! Pour les paresseux, le voici:

Le nouveau mode IFRAME dans HtmlService permet de transmettre les codes de clé aux modules complémentaires.

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

Il faut d'abord cliquer sur/activer la barre latérale pour que cela se produise.

5
John Targaryen

En mettant à jour, il est maintenant possible de contourner le problème mentionné par The Guy, via IFRAME, vous pouvez créer une barre latérale, un STUB juste pour entrer des commandes au clavier, les traiter avec jquery et exécuter la fonction appropriée déjà utilisée.

2
Kriggs

Excellente nouvelle :) Vous pouvez créer des raccourcis clavier personnalisés pour les fonctions de script de l'application Google en procédant comme suit:

  1. Dans l'interface utilisateur de Google Sheets, sélectionnez Outils> Macros> Enregistrer une macro.
  2. Enregistrez toute action. Par exemple, modifiez la couleur d'arrière-plan dans A1. Appuyez sur Enregistrer.
  3. Enregistrez-le avec un titre aléatoire et le raccourci préféré. Vous pourrez le changer plus tard.
  4. Sélectionnez Outils> Editeur de script pour ouvrir le script lié à la feuille dans l'éditeur de script Apps.
  5. Dans l'onglet Nouvel éditeur, sélectionnez Affichage> Afficher le fichier manifeste.
  6. TA - DÁ! : D Modifiez la valeur functionName sur celle désirée;)

N'oubliez pas que les fonctions macro ne doivent prendre aucun argument et ne renvoyer aucune valeur. Plus d'infos sur https://developers.google.com/apps-script/guides/sheets/macros#importing_functions_as_macros

2
urpi5

Une solution possible consiste à dédier une colonne au "texte de déclenchement", à définir différents déclencheurs basés sur le texte pour chaque action que vous tentez d'effectuer, puis à créer une fonction qui vérifie la valeur et effectue une action en fonction du " déclencher le texte ". Vous pouvez ensuite définir un déclencheur d'événement onEdit dans les déclencheurs du projet sous "Ressources" dans l'éditeur de script pour votre fonction de raccourci clavier. 

Le plus gros inconvénient de cette approche est qu’il faut (du moins pour moi) environ 7 secondes complètes au déclencheur onEdit pour détecter le changement et effectuer la mise à jour. Si vous souhaitez que quelque chose soit traité plus rapidement, vous devrez peut-être rechercher une autre approche.

J'ai fourni un exemple ci-dessous expliquant comment modifier la couleur d'une ligne en fonction du texte du déclencheur dans une colonne "déclencheur" désignée. Vous pouvez utiliser ceci pour effectuer tout ce qui peut être fait sur la feuille via un script, tel que modifier des valeurs, définir le poids de la police, copier des données ou même exécuter d'autres fonctions après avoir vérifié la saisie du texte de déclenchement.

/*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

Je suis aux prises avec un problème similaire mais je n'ai pas encore résolu le problème. Je pense qu'un moyen d'avancer peut être trouvé grâce à ce gestionnaire d'événements keypress sous Class Textbox .

Je ne sais pas si cela résout le problème du côté serveur, mais Arun l'a fait remarquer, mais je l'espère bien. N'hésitez pas à corriger mon raisonnement avant de perdre trop de temps à essayer cela! :)

0
The Guy

Bref récit: écrivez un service html qui utilise un gestionnaire d’événement de frappe pour capturer les événements de frappe et les compare aux raccourcis clavier souhaités, puis appelle la sous-routine appropriée côté serveur dans le script apps pour aligner les raccourcis, le format ou changements de document.

En ce qui concerne la viabilité, pas aussi facile que la vba que vous connaissez déjà, mais une fois que vous avez dépassé les différentes façons de faire les choses, ce n’est pas vraiment si difficile.

0
The Guy