如何使现有的AppleScript文件用作服务?


11

我制作了一个AppleScript,并将其另存为文件在硬盘上的特定文件夹中。现在,我想为其分配一个快捷方式,看起来我必须通过Automator进行服务,但是Run AppleScript要我将代码放入其中,而我想执行已经存在的.scpt文件。怎么做?

Answers:


9

是的,Automator是此处的最佳选择。要创建服务,请按照下列步骤操作:

  1. 打开Automator,然后选择服务:

    在此处输入图片说明

  2. 搜索“ applescript”,然后将操作拖动到右窗格中:

    在此处输入图片说明

  3. 更改Service receives selected textService receives no input,使其始终显示在“服务”菜单中:

    在此处输入图片说明

  4. 替换(* Your script goes here *)为:

    do shell script "/usr/bin/osascript /path/to/your/script.scpt"

    如果您希望执行现有.scpt文件。请注意,osascript无法像显示对话框窗口那样处理用户交互

    在此处输入图片说明

    要克服此限制,请使用此替代方法,或仅将其替换(* Your script goes here *)为脚本的内容。

  5. 保存:

    在此处输入图片说明

  6. 如果需要,可以为新服务分配快捷方式。在Finder(或任何打开的应用程序)中选择“服务”>“服务首选项”:

    在此处输入图片说明

  7. 分配一个不太常见的快捷方式:

    在此处输入图片说明

  8. 现在,您可以通过上一步中分配的快捷方式从任何应用程序访问您的服务:

    在此处输入图片说明

如果您想摆脱该服务~/Library/Services,请删除该服务并清空垃圾箱:

在此处输入图片说明


我说过我想执行现有的脚本文件,而不是再次将其写入Automator。
Nakilon

我认为复制/粘贴可以,但是是的,您是对的,您的问题中已明确指出。使用osascript,如其他答案中所述。
Jaume

@Nakilon我已经添加了如何osascript在Automator中使用它来运行.scpt文件,一个限制和两个解决方法。
Jaume

我就是这么做的 有效; 但是,现在启动脚本需要4到5秒钟。(将代码直接保存在工作流中后,它几乎立即启动。)知道是什么原因造成的,或者如何使其更快地启动?
扎克

1
@Zack谢谢,我不知道为什么osascript还要再花4秒钟来执行脚本,但是Automator并不是造成延迟的原因,这是我所关心的。您可能要调试osascript,请参阅opensourcehacker.com/2011/12/02/…stackoverflow.com/questions/31045575/…–
jaume

4

在脚本中,添加一个on run参数:

on run
    -- do whatever the script does
end run

然后,可以通过以下osascript命令使用Automator的“运行Shell脚本”操作:

osascript /path/to/script.scpt

osascript是在外壳中执行AppleScript的命令。您需要脚本中的行以允许在AppleScript编辑器之外执行脚本。


1
您不需要包括显式的运行处理程序。所有脚本都有一个隐式运行处理程序。Automator的Run AppleScript操作包含显式运行处理程序的原因可能是因为Automator使用特殊on run {input, arguments}形式,但是即使在Automator中,您也可以删除运行处理程序。
Lri 2013年

1
@͏͏͏我想知道这个ping是否成功。关于广告素材名称选择的荣誉。
bmike

3

也许您想看看This Service,它使您可以“从任何脚本创建Mac OS X服务”。


1
您能在这里提供答案,而不仅仅是一个链接

2

我不建议创建Automator服务来为脚本分配快捷方式。10.7和10.8中存在一个错误,其中直到您将鼠标悬停在菜单栏中的服务菜单上时,Automator服务的键盘快捷键才会始终起作用。在运行服务之前,还有一个相对较长的延迟(可能是0.1到1 s)。

有关将键盘快捷键分配给脚本的其他方法,请参见此答案。我自己使用FastScripts和Alfred。


我从未经历过这种徘徊的需要吗?您是否拥有所谈论内容的更多详细信息
markhunte

1
我不确定它是否会影响所有OS X的安装或所有服务,但是我在不同的安装中多次遇到它,并且在这里和其他用户中已经有人提到过。有时,所有Automator服务的键盘快捷键都会停止工作(或者如果您按它们,则什么也不会发生),但是如果将鼠标悬停在菜单栏中的服务菜单上,或者例如使用鼠标选择一项服务,它们将再次开始工作。
Lri 2013年

2

您可以使用这样的简单自动化服务来运行现有脚本。并从键盘快捷方式中正常分配快捷方式。请记住,某些应用程序在选择快捷方式之前可能需要重新启动。

例。

sayHello脚本:

say "hello"

自动化服务: 在此处输入图片说明

在此示例中使用:

  • 无输入
  • 任何应用程序。

该操作是运行Shell脚本 该代码仅使用unix命令osascript和文件路径。 传递输入可以是stdn参数

那就没什么特别的需要做的脚本了。

有关osascript命令的更多详细信息,请查看其手册页。手册页提供了另一个示例,您可以在其中向脚本传递参数。


0

要开发服务,您需要某种可以创建服务的软件,例如以下软件之一:

  1. Automator创建一个.workflow
  2. ThisService创建一个.service
  3. Xcode创建一个.app

以上所有类型的服务都是软件包。它们都是包含一个plist的文件夹,该plist指定服务的属性。

这是我使用Automator创建服务的方式,该服务使用“运行AppleScript” Automator操作来调用现有的.script。

调用现有AppleScript的Automator服务

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.