【问题标题】:Have one application execute an action when another application is given a command using AppleScript?当另一个应用程序使用 AppleScript 发出命令时,是否让一个应用程序执行操作?
【发布时间】:2012-06-13 15:21:22
【问题描述】:

我对 AppleScript 一无所知,但我想知道它是否可以让我的生活更轻松:有没有办法编写一个 AppleScript 来告诉 Safari / Firefox / Chrome 在我将文档保存在另一个应用程序中时刷新当前选项卡,比如说文字牧马人?本质上,我想映射 Command+S 键盘快捷键,以便在两个单独的应用程序中同时做两件事。

如果不可能,您能否编写一个应用程序的脚本,以便在保存一个文件时在同一应用程序的另一个窗口中执行命令?

【问题讨论】:

    标签: applescript


    【解决方案1】:

    有多种可能的方法来实现这一点,但最直接的可能是创建一个脚本来执行您需要的所有步骤(即保存文档并刷新窗口)并将其绑定到 Cmd+S 触发应用程序中的键盘组合。

    要使这种方法起作用,您需要按顺序:

    1. 一种将组合键绑定到仅在特定应用程序中有效的脚本的方法OS X’ Automator Services 符合要求:它们的范围可以限制为单个应用程序(在工作流操作顶部的“仅在”下拉列表中选择它),并且可以在系统的键盘首选项窗格中为其分配快捷方式偏好。
    2. 一种将您的命令中继到它们所针对的应用程序的方法。 AppleScript 可以通过两种不同的方式为您提供帮助,具体取决于您的应用程序是否可编写脚本,即它们是否有脚本字典,您可以在 AppleScript 编辑器中检查:

      • 如果他们这样做,并且他们的术语包括一方面为编辑器保存操作(大多数基于脚本的文档应用程序以save <document> 的形式这样做),另一方面为浏览器刷新页面(Chrome有 reload <tab>,Safari 通过 JavaScript 绕道得到相同的结果,即 do JavaScript "window.location.reload()" in <document> - 我不使用 Firefox),你已经设置好了。
      • 如果他们不这样做,GUI 脚本可能会有所帮助,即通过 tell application "System Events" to tell process <your process> to click item x of menu y 模拟对右侧 UI 元素(菜单或工具栏)的点击。

      然后可以将该脚本嵌入到 Automator 工作流程中(准确地说,是在“运行 AppleScript”操作中)。

    如您所见,很大程度上取决于您使用的确切软件。如果您是 AppleScript 的新手并且上面的内容让您感到困惑,我建议您花一些时间在 the AppleScript pages of Mac OS X Automation 上(您还可以在其中找到示例脚本,这些脚本会让您开始学习 GUI 脚本)。

    最后一点:在撰写本文时,sandboxed applications do not honor key combos assigned to them in the Keyboard Preference pane(他们确实尊重设置在那里的 global 键组合 - 只是不是那些专门针对它们的组合)。例如,这意味着您当前无法覆盖 TextEdit 的 Cmd+S 快捷方式以保存在 Lion 中。只要您的编辑器没有被沙盒化(在 Activity Monitor 中很容易检查),您应该对此没有任何问题。

    【讨论】:

    • 以上是在坚持原始问题的 AppleScript 组件时说的,对于概述的使用案例,您可能需要查看 LiveReloadCodeKit
    • 感谢您的意见。我现在必须做一些研究。我发现我有一个应用程序可以做一些与我已经想要的非常相似的事情,但是看看我是否能实现最初的目标会很有趣。实际上,我在浏览互联网寻找可以满足我需求的应用程序时发现了 LiveReload。还没买,估计会买的。
    【解决方案2】:

    一种解决方案是创建一个文件夹操作以在文件夹中保存新文件时刷新当前选项卡。

    on adding folder items to theFolder after receiving theFiles
    
        tell application "Google Chrome"
            activate
            tell window 1 to tell active tab
                set URL to (get URL)
            end tell
        end tell
    
    end adding folder items to
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多