53

Microsoft Excel スプレッドシートの一部を Google Doc スプレッドシートに置き換えることの実行可能性を把握しようとしています。Google ドキュメント スプレッドシートで Google アプリ スクリプト関数へのカスタム キーボード ショートカットを作成するにはどうすればよいですか? これは、私が VBA と Excel でよく行うことです。

4

9 に答える 9

20

Apps Script はサーバー側のイベントのみを公開します。残念ながら、現在、キーボード ストロークなどのクライアント側イベントを登録することはできません。問題トラッカーに問題を記録してください

于 2012-12-05T20:29:07.777 に答える
9

問題 306に解決策が投稿されました。怠惰な人のために、ここにあります:

HtmlService の新しい IFRAME モードでは、キー コードをアドオンに渡すことができます...

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

そのためには、最初にサイドバーをクリック/アクティブ化する必要があります。

于 2015-06-01T22:08:04.957 に答える
1

これに対する 1 つの可能な回避策は、「トリガー テキスト」専用の列を作成し、実行しようとしているアクションごとに異なるテキスト ベースのトリガーを定義してから、値をチェックし、それに基づいてアクションを実行する関数を作成することです。トリガーテキスト」。次に、ホットキー関数のスクリプト エディターの [リソース] の下にあるプロジェクトのトリガーで onEdit イベント トリガーを設定できます。

このアプローチの最大の欠点は、onEdit トリガーが変更をキャッチして更新を実行するのに (少なくとも私にとっては) 約 7 秒かかることです。より迅速に処理する必要がある場合は、別のアプローチを探す必要があるかもしれません。

指定された「トリガー」列のトリガー テキストに基づいて行の色を変更する方法の例を以下に示します。これを使用して、値の変更、フォントの太さの設定、データのコピー、さらにはトリガー テキスト入力の確認後に他の機能を実行するなど、スクリプトを介してシートで実行できることをすべて実行できます。

/*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();
    }
  }
}
于 2016-11-25T07:00:41.887 に答える
0

私は同様の問題に苦しんでいますが、まだあまり解決されていません.Class Textboxの下にあるこのキープレスイベントハンドラーを介して前進する方法を見つけることができると思います.

これがArunが指摘したサーバー側の問題のみを回避するかどうかはわかりませんが、そうなることを願っています. これを試して時間を無駄にする前に、私の推論を自由に修正してください! :)

于 2014-03-21T19:52:00.427 に答える