我在尝试使用Google文档电子表格替换部分Microsoft Excel电子表格的可行性。我怎样才能创建一个谷歌应用程序脚本函数在谷歌文档电子表格的自定义键盘快捷方式?这是我通常用VBA和Excel做的事情。如何为Google应用脚本功能创建自定义键盘快捷键?
回答
Apps脚本仅公开server side events。不幸的是,你今天不能注册像键盘笔画这样的客户端事件。请在我们的登录问题issue tracker
正如@Arun所说,这还不支持。请参阅并明星issue。
我有一个类似的问题,尽管我没有得到多少解决但我想前进的方向可以通过这个keypress event handler under Class Textbox
发现我不知道,如果这都绕服务器的问题所困扰只有阿伦指出,但我确信希望如此。在我浪费太多时间尝试之前,请随时纠正我的推理! :)
此方法是UiApp服务的一部分,它不提供从文档或电子表格UI中调用函数的解决方案。在UiApp或html服务中,您当然可以使用按键来触发事件 –
好的。那么有没有什么可以让UiApp或html服务(我认为可以成为扩展的一部分)调用在Google Docs中编写的Apps脚本中的宏,然后可以执行键盘快捷方式直接完成的必需步骤? –
确实没什么...可以使用这种模式与侧边栏...边栏中的用户界面将具有可以调用脚本功能的按钮。一些新的附加组件以非常优雅的方式使用该配置。 –
长话短说:写一个html服务,它使用按键事件处理程序捕获按键事件,并将它们与所需的热键快捷键进行比较,然后在应用程序脚本中调用服务器端的相应子例程以内联要求按键,格式或文档更改。
就可行性而言,并不像你已经熟悉的vba那么简单,但是一旦你通过了不同的做事方式,并不那么困难。
我不认为我明白你在说什么。你有链接到一篇文章或一些文档,或者你能展示一个例子吗? – User
对不起,没有。我只是在为朋友研究类似问题的同时阅读相关文件。 不幸的是,我必须承认,我现在的答案似乎是错误的。我无法得到此确认,但离我最近的人可以告诉我们处理Docs文本输入面板的功能被阻止。我可以编写一个html服务侧边栏,但我无法获取必要的对象,以便为主文档面板创建按键事件处理程序。我猜测他们可能是在试图阻止某人编写键盘记录或其他东西。 –
只是更新,现在可能的解决方案,盖伊提到,通过IFRAME,你可以创建一个侧栏,一个STUB只是为了进入键盘命令,用jquery处理它们,并运行适当的功能, 。
为此,一个可能的解决方法是专门为“触发器文本”设置专栏,为您要执行的每个操作定义不同的基于文本的触发器,然后创建一个函数来检查值并执行操作基于“触发文本”。然后,您可以在脚本编辑器的“资源”下的项目触发器中为热键功能设置一个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();
}
}
}
- 1. 如何在Android Studio中创建自定义键盘快捷键
- 2. 如何为Google搜索结果创建键盘快捷键?
- 3. 自定义键盘快捷键
- 4. xcode功能菜单键盘快捷键
- 5. 在mac上创建R功能的键盘快捷键?
- 6. 如何在CKeditor中使用jQuery自定义键盘快捷键?
- 7. iOS应用程序上的自定义键盘快捷键
- 8. 如何使用键盘上的键“c”调用键盘快捷键功能
- 9. 键盘快捷键创建ubuntu
- 10. 如何将自定义键盘快捷键添加到GWT CellTable
- 11. 如何编写自定义键盘快捷键
- 12. 如何为DataGridView创建自定义快捷键?
- 13. 如何为网站创建键盘快捷键?
- 14. 如何为SublimeREPL创建键盘快捷键?
- 15. 如何重新定义内置键盘快捷键的行为?
- 16. 为可定制键盘快捷键创建输入
- 17. 创建JS键盘,功能未定义?
- 18. 为web应用程序使用javascript的自定义键盘快捷键
- 19. 键盘快捷键
- 20. 键盘快捷键
- 21. 在linux c应用程序中创建自定义快捷键
- 22. 使用自定义浏览器键盘快捷键
- 23. 在控制台中使用自定义键盘快捷键
- 24. :自定义键盘快捷键不起作用?
- 25. Google +的+1键盘快捷键?
- 26. Windows自定义快捷键
- 27. 如何在网站上实现键盘功能快捷键?
- 28. 如何实现新iPad Pro键盘快捷键功能?
- 29. 如何在JavaScript中触发键盘快捷键功能?
- 30. 使用键盘快捷键
问题跟踪器最接近的问题似乎是[问题306](https://code.google.com/p/google-apps-script-issues/issues/detail?id = 306)这可以做一些更多的星星/ upvotes,但是应用程序团队对此有一种震耳欲聋的沉默:( –
有人在[issue 306 post 33](https://code.google。)上添加了一个工作解决方案。 com/p/google-apps-script-issues/issues/detail?id = 306#c33)! –