我有一个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
但是我希望脚本只在以前打开的窗口关闭时打开一个新的消息窗口 - 否则,之前打开的窗口应该在前面。
有人可以帮我修改这个脚本来实现上述功能吗?
答案 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服务中,因为这些会被重新编译每次加载服务时。)