[Google-Apps-Script] Wie erstelle ich benutzerdefinierte Tastaturkürzel für Google App Script-Funktionen?



Answers

Wie @Arun sagt, wird dies noch nicht unterstützt. Sehen und markieren Sie dieses Problem .

Question

Ich versuche herauszufinden, ob einige meiner Microsoft Excel-Tabellen mit Google Doc Spreadsheets ersetzt werden können. Wie kann ich eine benutzerdefinierte Tastenkombination für eine Google App-Skriptfunktion in einer Google Docs-Tabelle erstellen? Dies ist etwas, was ich normalerweise mit VBA und Excel mache.




Eine mögliche Umgehung dafür wäre, eine Spalte für "Trigger-Text" zu reservieren, verschiedene textbasierte Trigger für jede Aktion zu definieren, die Sie ausführen möchten, und dann eine Funktion zu erstellen, die den Wert überprüft und eine Aktion basierend auf dem ausführt. triggert Text ". Sie können dann im Script-Editor für Ihre Hotkey-Funktion unter "Ressourcen" einen onEdit-Ereignistrigger in den Auslösern des Projekts setzen.

Der größte Nachteil dieses Ansatzes besteht darin, dass es (zumindest für mich) ungefähr 7 volle Sekunden dauert, bis der onEdit-Trigger die Änderung erfasst und das Update durchführt. Wenn Sie etwas schneller verarbeiten möchten, müssen Sie möglicherweise nach einem alternativen Ansatz suchen.

Ich habe unten ein Beispiel für das Ändern der Zeilenfarbe basierend auf dem Trigger-Text in einer bestimmten "Trigger" -Spalte angegeben. Sie können damit alles tun, was auf dem Blatt per Skript getan werden kann, z. B. Werte ändern, Schriftgrad festlegen, Daten kopieren oder sogar andere Funktionen ausführen, nachdem Sie die Triggertexteingabe überprüft haben.

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



Lange Rede, kurzer Sinn: Schreiben Sie einen HTML-Service, der einen Key-Press-Ereignishandler verwendet, um Tastendruckereignisse zu erfassen und vergleicht sie mit den gewünschten Hotkey-Shortcuts. Anschließend ruft er die entsprechende Subroutine auf Serverseite im Appskript auf, um die für Tastenanschläge, Format oder Änderungen dokumentieren.

Was die Machbarkeit angeht, nicht so einfach wie das VBA, mit dem du bereits vertraut bist, aber wenn du erst einmal an der anderen Art und Weise vorbeikommst, Dinge zu tun, die nicht wirklich so schwer sind.




Erst kürzlich (April 2018) hat Google einen Makro-Rekorder eingeführt, der eine Möglichkeit bietet, eine Tastenkombination zum Auslösen eines Makros und eine Möglichkeit zum Importieren vorhandener Skripts als Makros zuzuweisen. Siehe Google Tabellen-Makros

HINWEIS: Diese Funktion wird derzeit bereitgestellt, sodass es einige Wochen dauern kann, bis sie für alle verfügbar ist. In meinem Fall war es zuerst auf meinem persönlichen Google-Konto verfügbar und seit gestern ist es auf einem meiner G Suite-Konten verfügbar.






Links