Applescript для создания приложения New Message with Mail - PullRequest
5 голосов
/ 09 февраля 2012

У меня есть AppleScript для 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 Ответ

4 голосов
/ 09 февраля 2012

Я не проверял это, но он должен делать то, что вам нужно ... по крайней мере, он показывает вам правильный подход.Вы в основном используете «свойство» для отслеживания некоторого значения с момента последнего запуска скрипта.В этом случае мы проверяем имя переднего окна и проверяем, соответствует ли оно вашим критериям.Если имя окна не делает то, что вам нужно, просто найдите другое значение для отслеживания между запусками скрипта.Базовый подход должен работать.

РЕДАКТИРОВАТЬ: используя идентификатор сообщения, который является уникальным, следующее будет делать то, что вы хотите:

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, поскольку они перекомпилируются каждый разслужба загружена).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...