【问题标题】:Passing Variables to another Applescript Application将变量传递给另一个 Applescript 应用程序
【发布时间】:2014-08-18 19:36:09
【问题描述】:

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

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

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

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

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 以运行一个需要文本输入的复杂应用程序。现在我得到的只是“连接无效”。如果我不需要输入,似乎使用激活可以正常工作。

【问题讨论】:

    标签: applescript automator


    【解决方案1】:

    我能想到的方法有两种。

    1) 使用以下代码创建您的“testhandlerApp.app”。我把我的保存在桌面上。你会注意到它有一个“on run”处理程序,它接受一个参数列表,然后运行 ​​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”。通过选中保存窗口中的“保持打开”复选框,将其保存为“保持打开”applescript 应用程序。

    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 就像一个魅力。我知道它要么处于打开状态,要么处于运行状态,但参数是我脑死亡的地方。为我工作。有一个绿色的复选标记:)
    • 为了记录,我必须访问一个参数,所以我做了类似on run arg set message to item 1 of arg
    【解决方案2】:

    This link for AppleScript Language Guide 可能会有所帮助。我还没有完成您之前要求的操作 - 因为我对 AppleScript 还很陌生,但 Automator 显示为 on run 功能可能会有所帮助。结帐this link of AppleScript tips - 包括on run 函数。

    【讨论】:

    • Automator 是将变量传递给独立的 applescript 应用程序的起点,该应用程序使用带有输入的“On Open”术语。我还应该能够使用两个独立的应用程序,并让一个告诉另一个该做什么。我想说的 Automator 没有实际意义,但我想补充一下我的最终意图。
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多