Я не проверял это, но он должен делать то, что вам нужно ... по крайней мере, он показывает вам правильный подход.Вы в основном используете «свойство» для отслеживания некоторого значения с момента последнего запуска скрипта.В этом случае мы проверяем имя переднего окна и проверяем, соответствует ли оно вашим критериям.Если имя окна не делает то, что вам нужно, просто найдите другое значение для отслеживания между запусками скрипта.Базовый подход должен работать.
РЕДАКТИРОВАТЬ: используя идентификатор сообщения, который является уникальным, следующее будет делать то, что вы хотите:
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 будет хранить идентификатор, пока скрипт не перекомпилируется ( caveat empteor : не помещайте его в службу Automator, поскольку они перекомпилируются каждый разслужба загружена).