用于使用Mail应用程序创建新邮件的Applescript

时间:2012-02-09 10:44:43

标签: applescript

我有一个AppleScript for Mail.app,它会打开一个带有预定义收件人地址和主题的新邮件窗口。每次运行时,此脚本都会打开一个新窗口:

tell application "Mail"
    set newMessage to make new outgoing message with properties {subject:"some subject", content:"" & return & return}
    tell newMessage
        set visible to true
        make new to recipient at end of to recipients with properties {name:"some name", address:"some address"}
    end tell
    activate
end tell

但是我希望脚本只在以前打开的窗口关闭时打开一个新的消息窗口 - 否则,之前打开的窗口应该在前面。

有人可以帮我修改这个脚本来实现上述功能吗?

1 个答案:

答案 0 :(得分:3)

我没有对此进行测试,但它应该做你需要的......至少它会向你显示正确的方法。您基本上使用“属性”来跟踪上次运行脚本时的某些值。在这种情况下,我们检查最前面窗口的名称,看它是否符合您的标准。如果窗口名称不能满足您的需要,那么只需找到一些其他值即可在脚本启动之间进行跟踪。基本方法应该有效。

编辑:使用唯一的消息ID,以下内容将执行您想要的操作:

property lastWindowID : missing value
tell application "Mail"
    set windowIDs to id of windows
    if windowIDs does not contain lastWindowID then
        set newMessage to make new outgoing message with properties {subject:"some subject", content:"" & return & return}
        tell newMessage
            set visible to true
            make new to recipient at end of to recipients with properties {name:"some name", address:"some address"}
        end tell
        activate
        set lastWindowID to id of window 1
    else
        tell window id lastWindowID
            set visible to false
            set visible to true
        end tell
        activate
    end if
end tell

可见性切换似乎是将窗口放在前面的唯一方法,因为frontmost是一个只读属性。只要脚本没有被重新编译, lastWindowID 属性就会存储ID( caveat empteor :不要把它放到Automator服务中,因为这些会被重新编译每次加载服务时。)