2013-08-29 81 views
0

我已經創建了兩個液滴,一個用於重命名文件,另一個用於打印文件。它們比這更復雜,但這是本質。有時候我們需要重新命名它們,有時候只是將它們打印出來,有時候也會這樣做。由於每個用戶需要大量定製,因此我希望保持兩個水滴分離。Applescript滴到液滴通信

所需的工作流程:將文件拖到RenameMe液滴,如果按住命令鍵,則將重命名的文件傳遞給PrintMe液滴。

在checkModifierKeys腳本的幫助下(很抱歉,沒有引用方便)我可以檢查命令鍵是否被按下,以便部分腳本被照顧。問題是如何從第一滴觸發第二滴。我已經嘗試用第二個液滴作爲應用程序打開文件(如下面的代碼所示),但得到通信錯誤。

任何想法? --Alex

示例代碼:

on open the_Droppings 
set flPth to POSIX path of (path to me) & "Contents/MacOS/checkModifierKeys" 
set cmdPressed to (do shell script (quoted form of flPth & " command")) as integer as boolean 

repeat with i from 1 to (count of items in the_Droppings) 
    set file_name to "NEW NAME FROM SCRIPT" #actual script that generates name isn't relevant 
    tell application "Finder" 
     set name of file (item i of the_Droppings) to file_name 
    end tell 

    if cmdPressed is true then 
     #pass the file to the PrintMe droplet  
     tell application "PrintMe" 
      open (item i of the_Droppings) 
     end tell 
    end if 
end repeat 
end open 
+0

你爲什麼不保持一個別名(甚至是複製)在RenameMe腳本程序包中的其他腳本,然後每次都打電話嗎? – scohe001

+0

這是相同的工作流程[@MondoJobsNY今天早上在發送推文](https://twitter.com/mondojobsny/status/373038063523360768)? – adayzdone

回答

0

您可以添加一個明確的運行處理程序PrintMe,這將使你們兩個不同的入口點到腳本。兩者都有爭議。我在這裏設置了一個文件傳遞給運行處理程序,並將一個列表傳遞給打開的處理程序,但是如果你想要的話,你可以將一個列表傳遞給運行處理程序,並以與打開時相同的方式重複。

在RenameMe:

if cmdPressed is true then 
    #pass the file to the PrintMe droplet  
    run script (load script file "path:to:PrintMe.app") with parameters (item i of the_Droppings) 
end if 

在打印我:

on open the_droppings 
    repeat with i from 1 to (count the_droppings) 
     process(item i of the_droppings) 
    end repeat 
end open 

on run the_file 
    process(the_file) 
end run 

on process(the_file) 
    // Code for printing files goes here 
end process 
+0

感謝Josh,但是PrintMe腳本爲每個用戶量身定製,因此每次RenameMe更新時,我都無法輕鬆地將其重新部署爲RenameMe的一部分。 – inaneAlex

+0

感謝Darrick,這可能會起作用。用戶在同一目錄中有RenameMe和PrintMe,所以我可以很容易地找到PrintMe的路徑。我會試一試。 – inaneAlex

+0

感謝Darrick,只是在運行語句後添加了「腳本」以便進行編譯,並且它實現了訣竅。 – inaneAlex