題:
如何使現有的AppleScript文件用作服務?
Nakilon
2013-09-01 21:11:27 UTC
view on stackexchange narkive permalink

我製作了一個AppleScript,並將其保存為文件在硬盤驅動器上的特定文件夾中。現在,我想為其分配一個快捷方式,看起來必須通過Automator進行服務,但是 Run AppleScript 要求我將代碼放入其中,而我想執行已經存在的.scpt文件。該怎麼做?

六 答案:
jaume
2013-09-02 13:29:26 UTC
view on stackexchange narkive permalink

是的,Automator是此處的最佳選擇。要創建服務,請按照以下步驟操作:

  1. 打開Automator並選擇“服務”:

    enter image description here

  2. 搜索“ applescript”,然後將操作拖動到右窗格:

    enter image description here

  3. 更改服務會接收選定的文本 Service的輸入未收到,因此它始終出現在“服務”菜單中:

    enter image description here

  4. 替換 (*您的腳本在這裡*)包括:

     執行shell腳本“ / usr / bin / osascript /path/to/your/script.scpt”  

    ,如果您想執行現有的 .scpt 文件。請注意, osascript無法像顯示對話框窗口那樣處理用戶交互

    enter image description here

    要克服此限制,請使用此替代方法或直接用腳本的內容替換(*您的腳本在這裡*)

  5. 保存:

    enter image description here

  6. 如果需要,可以為新服務分配快捷方式。在Finder(或任何打開的應用程序)中選擇“服務”>“服務首選項”:

    enter image description here

  7. 分配一個不太常用的快捷方式:

    enter image description here

  8. 現在可以通過上一步中指定的快捷方式從任何應用程序訪問您的服務:

    enter image description here

  9. ol>

    如果您想擺脫該服務,請打開〜/ Library / Services ,刪除該服務並清空垃圾桶:

    enter image description here

我說過我想執行現有的腳本文件,而不是再次將其寫入Automator。
我認為複制/粘貼可以,但是是的,您是對的,您的問題中已明確指出。使用“ osascript”,如其他答案所述。
@Nakilon我已經添加瞭如何在Automator中使用`osascript`運行`.scpt`文件,一個限制和兩個解決方法。
我就是這麼做的有效;但是,現在需要4到5秒鐘來啟動腳本。(將代碼直接保存在工作流中後,它幾乎立即啟動。)知道是什麼原因造成的,或者如何使其更快地啟動?
@Zack在終端窗口中運行`/ usr / bin / osascript / path / to / your / script.scpt`時,腳本是否還需要4到5秒鍾啟動?
我不確定。該特定腳本需要選擇的電子郵件。我不確定如何從命令行偽造它。
@Zack啟動終端,然後輸入“ sleep 10 && / usr / bin / osascript /path/to/your/script.scpt”。這使您有10秒鐘的時間來切換到郵件並在腳本運行之前選擇郵件。您可以嘗試並舉報嗎?
是。如果我選擇了一條郵件,然後從命令行運行腳本,則該對話框將花費6秒鐘。將代碼直接保存在Automator腳本中後,從服務菜單中選擇腳本後不到2秒就會彈出對話框
@Zack謝謝,我不知道為什麼osascript需要額外的4秒鐘來執行腳本,但是Automator並不是造成延遲的原因,這是我關心的問題。您可能要調試`osascript`,請參見https://opensourcehacker.com/2011/12/02/osx-strace-equivalent-dtruss-seeing-inside-applications-what-they-do-and-why-they-hang /和https://stackoverflow.com/questions/31045575/how-to-trace-system-calls-of-a-program-in-mac-os-x
alexwlchan
2013-09-01 21:18:24 UTC
view on stackexchange narkive permalink

在腳本中,添加運行時 參數:

 運行時-執行腳本結束運行時所做的任何操作 

然後,您可以通過 osascript 命令使用Automator的“運行Shell腳本”操作:

  osascript /path/to/script.scpt  

osascript 是在外殼程序中執行AppleScript的命令。您需要腳本中的行,以允許在AppleScript編輯器之外執行腳本。

您不需要包括顯式的運行處理程序。所有腳本都有一個隱式運行處理程序。 Automator的Run AppleScript操作包含顯式運行處理程序的原因可能是因為Automator使用特殊的“運行時{input,arguments}”形式,但是即使在Automator中,您也可以刪除運行處理程序。
@͏͏͏我想知道這個ping是否成功。關於廣告素材名稱選擇的榮譽。
Peter
2013-09-01 21:44:26 UTC
view on stackexchange narkive permalink

也許您想看看此服務,它使您可以“從任何腳本創建Mac OS X服務”。

您能否在這裡提供答案,而不僅僅是一個鏈接
Lri
2013-09-02 14:14:13 UTC
view on stackexchange narkive permalink

我不建議創建Automator服務來為腳本分配快捷方式。 10.7和10.8中存在一個錯誤,其中直到您將鼠標懸停在菜單欄中的服務菜單上時,Automator服務的鍵盤快捷鍵才會始終起作用。在運行服務之前,還有一個相對較長的延遲(可能是0.1到1 s)。

有關為鍵盤分配快捷鍵的其他方法,請參見此答案。我自己使用FastScripts和Alfred。

我從未經歷過這種徘徊的需要嗎?你是否有更多關於你在說什麼的細節
我不確定它是否會影響所有OS X的安裝或所有服務,但是我在不同的安裝中多次遇到它,並且在這里和其他用戶中已經有人提到過。有時,所有Automator服務的鍵盤快捷鍵都會停止工作(或者如果您按它們,則什麼也不會發生),但是如果將鼠標懸停在菜單欄中的服務菜單上,或者例如使用鼠標選擇一項服務,它們將再次開始工作。
markhunte
2013-09-02 15:46:55 UTC
view on stackexchange narkive permalink

您可以使用像這樣的簡單自動化服務來運行現有腳本,並像往常一樣從鍵盤快捷方式中分配快捷方式。請記住,某些應用程序可能需要重新啟動才能使用快捷方式。

示例。

sayHello腳本:

 說“ hello”  

自動服務:enter image description here

在此示例中使用的是:

  • 無輸入
  • 任何應用程序。

操作是運行Shell腳本。該代碼僅使用unix命令 osascript 和文件路徑。 傳遞輸入 可以是 stdn 論證

,也就是說,腳本不需要執行任何特殊操作。

有關 osascript命令的更多詳細信息,請參見手冊頁。手冊頁提供了另一個示例,您可以在其中向腳本傳遞參數。

Kaydell
2013-09-02 20:39:44 UTC
view on stackexchange narkive permalink

要開發服務,您需要某種可以創建服務的軟件,例如以下軟件之一:

  1. 使用Automator創建.workflow
  2. ThisService創建.service
  3. Xcode創建.app
  4. ol>

    以上所有類型的服務都是軟件包。它們都是包含一個plist的文件夾,這些plist指定了服務的屬性。 p>

    Automator Service That Calls an Existing AppleScript



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...