首页 文章

如何为谷歌应用脚本功能创建自定义键盘快捷键?

提问于
浏览
41

我试图了解用Google Doc Spreadsheets替换我的一些Microsoft Excel电子表格的可行性 . 如何在Google文档电子表格中为Google App脚本功能创建自定义键盘快捷键?这是我通常用VBA和Excel做的事情 .

9 回答

  • 9

    最近(2018年4月)Google推出了一个宏录制器,其中包括一种分配键盘快捷方式来触发宏的方法,以及一种将现有脚本导入为宏的方法 . 见Google Sheets Macros

    注意:此功能目前正在推出,因此可能需要几周时间才能供所有人使用 . 在我的情况下,它首先在我的个人Google帐户上提供,从昨天开始,它可以在我的一个G Suite帐户上使用 .

  • 9

    正如@Arun所说,这还不支持 . 看到这个issue并加注星标 .

  • 1

    只是更新,现在可能是The Guy提到的解决方法,通过IFRAME,你可以创建一个侧边栏,一个STUB只需输入键盘命令,用jquery处理它们,并运行适当的功能,已经使用了它 .

  • 5

    我已经解决了很多问题,但我认为通过这个问题可以找到前进的方法keypress event handler under Class Textbox

    我不知道这是否解决了服务器方面的问题,只有Arun指出,但我肯定希望如此 . 在浪费太多时间尝试之前,请随意纠正我的推理! :)

  • 0

    已经在issue 306发布了一个解决方案!对于懒惰,这里是:

    HtmlService中的新IFRAME模式允许将密钥代码传递给附加组件...

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

    必须先点击/激活侧边栏才能实现 .

  • 0

    Apps脚本仅公开server side events . 不幸的是,您今天无法注册键盘笔划等客户端事件 . 请在我们的issue tracker中记录一个问题

  • 19

    一个可能的解决方法是为“触发器文本”专门设置一个列,为您尝试执行的每个操作定义不同的基于文本的触发器,然后创建一个检查值并根据“”执行操作的函数 . 触发文字“ . 然后,您可以在脚本编辑器中“资源”下的项目触发器中为热键功能设置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();
        }
      }
    }
    
  • 2

    简而言之:编写一个html服务,它使用按键事件处理程序来捕获按键事件,并将它们与您想要的热键快捷键进行比较,然后在应用程序脚本中调用服务器端的相应子例程,以内联调用的键击,格式或文件变更 .

    就可行性而言,并不像你已经熟悉的vba那么容易,但是一旦你超越了不同的做事方式,那就不那么困难了 .

  • 2

    好消息:)您可以按照以下简单步骤实现谷歌应用脚本功能的自定义键盘快捷键:

    • 在Google表格用户界面中,选择 Tools > Macros > Record Macro .

    • 记录任何动作 . 例如,更改A1中的颜色背景 . 按 Save .

    • 使用随机 Headers 和首选快捷方式保存 . You can change it later .

    • 选择 Tools > Script editor 以在Apps脚本编辑器中打开绑定到工作表的脚本 .

    • 在新编辑器选项卡中,选择 View > Show Manifest File

    • TA - DÁ! :D将 functionName 值更改为所需的值;)

    请记住,宏函数不应该不带参数,也不返回任何值 . 更多信息,请访问https://developers.google.com/apps-script/guides/sheets/macros#importing_functions_as_macros

相关问题