可以在没有明显启动应用程序的情况下执行AppleScript“tell”调用吗?

时间:2011-02-17 19:13:17

标签: applescript tell

我设置了邮件规则以启动以下AppleScript:

using terms from application "Mail"
    on perform mail action with messages theMessages for rule theRule
        tell application "Mail"

            -- do stuff, including...
            CheckAddressBook(theName, theAddress)

        end tell
    end perform mail action with messages
end using terms from

on CheckAddressBook(theName, theAddress)
    tell application "Address Book"
        -- do stuff
    end tell
end CheckAddressBook

每当执行此邮件规则时,它都会启动通讯簿。它没有激活,但突然出现在我的桌面上。我的问题是,是否可以告诉块以静默方式启动应用程序,并在完成后退出?

2 个答案:

答案 0 :(得分:4)

AppleScript无法在没有运行的情况下控制应用程序。这就是它的工作方式。您可以使用其他方法在不启动应用程序的情况下访问通讯簿数据库,但如果您使用AppleScript从通讯簿数据库获取数据,则应用程序必须启动。我的建议是简单地按照Fábio的建议添加一个退出命令。

答案 1 :(得分:2)

要在不启动“Address Book.app”的情况下阅读地址簿数据库,我建议您查看免费here可用的命令行工具“contacts”。然后,您将从Applescript运行它,如do shell script "/usr/bin/contacts Peter"并处理返回的值。