2016-05-16 85 views
0

我有一個helperScript,它有一些我經常使用的基本功能。Applescript子程序

我目前的腳本的流程是這樣的:

on SubA() 
    Set HelperScript to load….. 
    tell HelperScript 
    : : 
     : : 
    end tell 
end SubA 

on SubB() 
    Set HelperScript to load….. 

    tell HelperScript 
    :: 
     :: 
    end tell 
end SubB 

on run paravlist 
    Set HelperScript to load….. 

    tell HelperScript 

    SubA() 

    SubB() 

    end tell 
end run 

我不能作爲助手腳本正在建立,並從每個子程序的習慣叫蘇巴()和SUBB()。如果我註釋掉helperScript的用法。我可以從另一個調用子程序。處理這樣的問題的最佳方法是什麼?我想在每個子程序中使用helperScript。

+0

你能解釋一下你說的「我無法調用SubA()和SubB()...」嗎?你得到的錯誤是什麼,或者什麼不按預期工作,爲什麼。 – ThrowBackDewd

回答

0

在再次閱讀您的問題幾次後,我想我已經知道您在問什麼了。您正試圖在您的方法中加載腳本,然後您想調用該腳本中的方法?

如果是這樣的話,我覺得你要尋找的是這樣的...

set HelperScript to load script... 
set theResult to someMethod() of HelperScript 

編輯: 我還不太清楚,如果你有兩個腳本或一個,所以我已經更新了答案以反映這兩種情況。

雙腳本示例...

property HelperScript : null 

on run 
    try 
     if not loadScript() then error "Unable to load script" 

     set rslt1 to SubA() of HelperScript -- This approach assumes HelperScript.scpt is a different script and it contains a method called SubA 
     set rslt2 to SubB() of HelperScript -- This approach assumes HelperScript.scpt is a different script and it contains a method called SubB 

    on error errMsg 
     activate 
     display dialog "Error: " & errMsg buttons {"OK"} default button 1 giving up after 10 
    end try 
end run 


on loadScript() 
    try 
     set HelperScript to load script (POSIX file "/Path/To/HelperScript.scpt") 
     return true 
    on error 
     return false 
    end try 
end loadScript 

單腳本示例...

on run 
    try 
     set rslt1 to SubA() -- This approach assumes your HelperScript is THIS script 
     set rslt2 to SubB() -- This approach assumes your HelperScript is THIS script 
    on error errMsg 
     activate 
     display dialog "Error: " & errMsg buttons {"OK"} default button 1 giving up after 10 
    end try 
end run 

on SubA() 
    try 
     -- Do something here 

     return true -- or some other value 
    on error 
     return false -- or some other value 
    end try 
end SubA 

on SubB() 
    try 
     -- Do something here 

     return true -- or some other value 
    on error 
     return false -- or some other value 
    end try 
end SubB 
+0

對不起,我缺乏信息。我得到了錯誤:錯誤「腳本」不理解「SubA」消息。「號碼-1708從«劇本» – AnuRV

+0

我按照你的建議去做。我仍然得到錯誤。我想這裏的問題是在每個子例程中聲明和使用helperScript。有沒有一種方法可以在全局聲明它並使用它的所有子例程? – AnuRV

+0

@AnuRV - 查看兩種不同情況的更新答案,我並不完全確定你試圖達到的目標 – ThrowBackDewd

0

的AppleScript也包括在內,因爲10.9 library loading system。這不是很好(例如避免SDEF垃圾,因爲它是1. make-work和2. bug-injector),但它通常可以完成這項工作。我建議你採用這一點。