Код AppleScript для зацикливания сообщений в Entourage и их удаления - PullRequest
0 голосов
/ 15 сентября 2010

Я написал простой AppleScript, который бесконечно зацикливается внутри Entourage Inbox и получает темы «непрочитанных» сообщений:

tell application "Microsoft Entourage"
activate

repeat with eachMsg in messages of folder named "Inbox"
    if read status of eachMsg is untouched then
        set messageSubject to subject of eachMsg as string

        -- bla bla bla

        -- How to delete the message and proceed with the next one???
    end if

end repeat

Теперь проблема в том, что я хочу удалить сообщения после получения темы.Как я могу это сделать?Не могли бы вы написать мне пример?

Еще раз спасибо!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

После удаления сообщения вы изменили длину списка сообщений, поэтому в какой-то момент вы столкнетесь с индексом, который больше не существует, поскольку вы удалили достаточно сообщений. Чтобы обойти это, вы должны (по существу) жестко закодировать цикл; получить количество сообщений, и начать с последнего сообщения и перейти оттуда. Даже если вы удалили сообщение, индексы над текущим всегда будут без изменений. Не проверено, но это шаблон, который я использовал в другом месте ...

tell application "Microsoft Entourage"
activate
set lastMessage to count messages of folder named "Inbox"
repeat with eachMsg from lastMessage to 1 by -1
    set theMsg to message eachMsg of folder named "Inbox"
    if read status of theMsg is untouched then
        set messageSubject to subject of theMsg as string

        -- bla bla bla

        -- How to delete the message and proceed with the next one???
    end if

end repeat

Синтаксис «удобства» в Applescript иногда не таков, и поэтому я обычно его вообще избегаю.

0 голосов
/ 15 сентября 2010

Вот пример из примера на странице справки Microsoft Entourage (в частности, сценарий «Nuke Messages»):

repeat with theMsg in theMsgs
    delete theMsg -- puts in Deleted Items folder
    delete theMsg -- deletes completely
end repeat 
...