当另一个应用程序使用AppleScript发出命令时,是否有一个应用程序执行操作?

时间:2012-06-13 15:21:22

标签: applescript

我对AppleScript一无所知,但我想知道它是否能让我的生活变得更轻松:有没有办法编写AppleScript,告诉Safari / Firefox / Chrome在我将文档保存到另一个应用程序时刷新当前标签,比如说的TextWrangler?基本上,我想映射 Command + S 键盘快捷键,在两个独立的应用程序中一次完成两件事。

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

2 个答案:

答案 0 :(得分:0)

有不同的可能方法来实现这一点,但最直接的可能是创建一个脚本来执行您需要的所有步骤(即保存文档并刷新窗口)并将其绑定到 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 Scripting 可能有所帮助,即通过tell application "System Events" to tell process <your process> to click item x of menu y模拟右侧UI元素(菜单或工具栏)上的点击。

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

  3. 正如您所看到的,很大程度上取决于您使用的确切软件。如果你是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(他们确实尊重全球关键组合设置 - 只是没有专门针对它们的那些)。这意味着您不能,例如,当前覆盖TextEdit的 Cmd + S 快捷方式,以便在Lion中保存。只要您的编辑器没有沙盒(在活动监视器中轻松检查),您应该没有问题。

答案 1 :(得分:0)

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

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