将变量传递给另一个Applescript应用程序

时间:2014-08-18 19:36:10

标签: applescript automator

我已经找到了一些关于如何运行另一个AppleScript应用程序但没有给它输入的东西。在Applecript网站上,我发现了这个:

tell application "NonStayOpen"
  launch
  stringTest("Some example text.")
end tell

这将是一个解决方案,我只是在处理程序中说唱脚本并传递我的变量。但无论我做什么,我都无法让处理程序激活。

理想情况 运行包含以下内容的脚本:

tell application id "com.apple.testhandlerApp"
  TestHandler("Hi") --Or if I can get the Open(SomeVar) to work
end tell

然后激活包含脚本的应用程序testhandlerApp:

on TestHandler(somevar)
    set contentText to somevar as string
    display dialog contentText
end TestHandler

给我一​​个说“你好”的对话。原因是我想把第一部分代码放入automator来运行一个带文本输入的复杂应用程序。现在,我得到的是“连接无效”。如果我不需要输入,似乎使用激活工作正常。

2 个答案:

答案 0 :(得分:3)

我能想到的两种方式。

1)创建你的" testhandlerApp.app"使用以下代码。我在桌面上保存了我的。你会注意到它有一个"运行"接受一个参数列表然后运行TestHandler()的处理程序。如果您自己启动应用程序,try代码块只会阻止错误。显然,在这种情况下,没有传递参数列表和代码错误,所以try块阻止了。

注意:如果将此方法保存为普通脚本而不是应用程序,则此方法也可以使用。

on run argList
    try
        class of argList
    on error
        set argList to {"No arguments were passed!"}
    end try

    TestHandler(item 1 of argList)
end run

on TestHandler(somevar)
    set contentText to somevar as string
    display dialog contentText
end TestHandler

然后从另一个AppleScript中调用它,你可以使用"运行脚本"命令如下。

set appPath to (path to desktop as text) & "testhandlerApp.app"
run script file appPath with parameters {"Hi"}

你甚至可以通过命令行用这样的东西来调用它......

osascript /path/to/script arg1 arg2

2)创建你的" testhandlerApp.app"使用以下代码。将此保存为" 保持打开 "通过检查"保持打开"保存窗口中的复选框。

on run
end run

on TestHandler(somevar)
    set contentText to somevar as string
    display dialog contentText
end TestHandler

然后从另一个AppleScript中调用它来使用此...

tell application "testhandlerApp"
    TestHandler("Hi")
    quit
end tell
祝你好运!

答案 1 :(得分:0)

This link for AppleScript Language Guide可能有所帮助。我之前没有做过你所要求的事情 - 因为我对AppleScript很陌生,但它看起来像是一个on run函数的Automator可能有所帮助。结帐this link of AppleScript tips - 包括on run功能。