如何在两个应用程序之间进行选择? (Automator的)

时间:2013-07-03 18:31:15

标签: macos automator

我正在使用Automator编写一个应用程序(我是一个完全没有编程的新手,只有一些非常基本的理解),它将为用户提供在两个不同应用程序之间进行选择的提示。到目前为止,我有这个,我在本网站的另一篇文章中找到了

on run
choose from list {"Old", "New"} with prompt "Choose which launcher you want to use" without multiple selections allowed and empty selection allowed
return the result as string
end run

当用户选择两个选项中的一个并点击“确定”时,想法是打开相应的应用程序。但是,我无法弄清楚如何让应用程序读取选择的选项并打开相应的应用程序。这甚至可以在Automator中实现吗?

1 个答案:

答案 0 :(得分:1)

我相信以下代码会执行您想要执行的操作。我列出了三个应用程序,其中两个可能有:“日历”(以前称为“iCal”)和“联系人”(以前称为“地址簿”。还有第三个应用程序称为“Web Editior”,它没有'与Mac一起使用,但我想在名称中带有空格的应用程序上测试此脚本。

on run
    choose from list {"Calendar", "Contacts", "Web Editor"} with prompt "Choose which launcher you want to use" without multiple selections allowed and empty selection allowed
    if result is equal to false then
        error -128
    else
        # convert the list return from choose list to a single string
        set app_name to result as string
        # run the selected app
        tell application app_name
            launch
            activate
        end tell
        return app_name
    end if
end run

# the following line of code cancels the rest of the workflow when the user clicks the "Cancel" button
error -128

我相信你所缺少的是你正在使用“运行AppleScript”操作返回应用程序的名称,该名称会将其传递给工作流程中的下一个操作。

return the result as string

您需要做的是在变量中捕获所选应用程序的名称,如下所示:

# convert the list returned from the "choose list" command to be a single string
set app_name to result as string

在变量中有应用程序名称后,您可以按如下方式使用它来打开应用程序:

tell application app_name
    launch
    activate
end tell

我不知道要返回什么样的价值。您在AppleScript中返回的内容将传递到此工作流程中的下一个Automator操作。对我来说唯一有意义的是传递所选的应用名称。

return app_name

我们可以返回那个,或者另一个通常作为动作输出传递的东西是它自己的输入:

return input

您必须定义“输入”,例如在您创建新的Run AppleScript操作时:

on run {input, parameters}
    return input
end run

上面的脚本只是将其输入作为输出传递,并没有真正做任何事情,但这只是一个起点。

我正在组建一个网站作为在线教程,我可以使用你的帮助。我需要那些刚接触编程的人才能学习我正在组合的教程,我会免费帮助你,只要你在我的网站上给我反馈。如果您有兴趣,可以访问我的网站和/或给我发送电子邮件。

Beginning Mac Automation and Programming

kaydell@yahoo.com