Applescript子程序
我有一个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。
在再次阅读您的问题几次后,我想我已经知道您在问什么了。您正试图在您的方法中加载脚本,然后您想调用该脚本中的方法?
如果是这样的话,我觉得你要寻找的是这样的...
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
对不起,我缺乏信息。我得到了错误:错误“脚本”不理解“SubA”消息。“号码-1708从«剧本» – AnuRV
我按照你的建议去做。我仍然得到错误。我想这里的问题是在每个子例程中声明和使用helperScript。有没有一种方法可以在全局声明它并使用它的所有子例程? – AnuRV
@AnuRV - 查看两种不同情况的更新答案,我并不完全确定你试图达到的目标 – ThrowBackDewd
的AppleScript也包括在内,因为10.9 library loading system。这不是很好(例如避免SDEF垃圾,因为它是1. make-work和2. bug-injector),但它通常可以完成这项工作。我建议你采用这一点。
你能解释一下你说的“我无法调用SubA()和SubB()...”吗?你得到的错误是什么,或者什么不按预期工作,为什么。 – ThrowBackDewd