【问题标题】:Google apps script get keycode events from documentGoogle 应用程序脚本从文档中获取键码事件
【发布时间】:2020-02-04 01:34:57
【问题描述】:

我正在尝试在用户键入时修改 Google 文档的某些部分。

具体来说,我想添加一个功能来缩进多行文本。这意味着当用户选择多行文本,然后单击“tab”键时,它应该缩进所有这些行

为此,我认为除了使用以下命令读取选择之外,我还必须获取用户正在输入的任何内容的当前 keyCode:

 var doc = DocumentApp.getActiveDocument().getCursor();
    var els = doc.getElement(),
    txt = els.asText().getText()

我已经在工作了。 但问题是:

在我的客户端,当我这样做时:

window.addEventListener("keyup", function(e) {
        console.log(e.keyCode);
    })

只有在用户选择侧边栏时才会激活,而不是在用户输入谷歌文档本身时激活。

我明白为什么会这样,因为应用程序在 iframe 内的 iframe 中运行,但我仍然认为可能有一种方法可以以某种方式获取按下的键,或者至少以某种方式确定用户是否尝试按下选项卡关键与否。

那么:有什么方法可以检测用户是否按下了 tab 键,或者有没有其他方法可以使用 google 应用脚本轻松缩进多行?最好不要求用户单击应用程序脚本本身的按钮,但如果这是唯一的方法,那就这样吧......但是有没有可能的方法来获取用户在 google doc 本身上按下了哪些键?

【问题讨论】:

    标签: javascript events google-apps-script iframe dom-events


    【解决方案1】:

    这在 Google 文档中是不可能的。您要求使用“onEdit”或“onChange”触发器,但不幸的是,它们仅在 Google 表格中可用,而在 Docs 中不可用。您可以使用此Add-on triggers page 中列出的表格查看所有 Apps 脚本(不仅仅是附加组件)中可用的触发器。

    【讨论】:

    • 是否可以通过扩展来实现?
    • @bluejayke 我不确定您所说的“扩展”是什么意思,但我很确定答案是否定的。 Google 根本不提供将按键信息从编辑器传递到 Apps 脚本的方法。
    • 我的意思是浏览器 chrome 扩展,实际上我只是在了解扩展后才能够做到这一点,在内容脚本中:addEventListener("keyup", e=> { console.log(e. keyCode); }, true) 和 manifest: , "match_about_blank":true, "all_frames": true 现在当我输入谷歌文档时,它控制台记录键码......现在的 onyl 问题正在发送该数据对于 google app 脚本,也许它可以定期检查服务器,或者 google app 脚本有办法从扩展中读取 postmessage??
    • @bluejayke 可以通过 Chrome 扩展程序工作是有道理的。如果这就是您正在做的事情,那么简单的技巧就是让扩展程序在侧边栏中模拟一个动作(单击相应的按钮)。
    • 哦,有趣的想法,就像填写一个输入字段然后单击提交按钮,天才!我想我必须找到一种方法来获取扩展,以便在 iframe 中设置 iframe 中元素的值
    猜你喜欢
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多