Код AppleScript для петли сообщений в антураге и удалить их
-
03-10-2019 - |
Вопрос
Я написал простой AppleScript, который петли бесконечно внутри почтовых ящиков внутри антуража и получает субъекты «непрочитанные» сообщения:
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
Теперь проблема в том, что я хочу удалить сообщения после получения объекта. Как я могу это сделать? Не могли бы вы написать мне пример?
Спасибо еще раз!
Решение
После того, как вы удалите сообщение, вы изменили длину списка сообщений, поэтому в какой-то момент вы собираетесь столкнуться с индексом, который больше не существует, потому что вы удалили достаточно сообщений. Чтобы обойти это, вы должны (по существу) жесткий код петли; Получите количество сообщений и начните с последнего сообщения и переместитесь оттуда. Даже если вы удалили сообщение, индексы выше текущего всегда будут не повреждены. Непроверенный, но это шаблон, который я использовал в другом месте ...
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» иногда нет, и вот почему я обычно избегаю его вообще.
Другие советы
Вот снимается с примера на странице справки поддержки Microsoft Entourage (в частности, сценарию «Сообщений NUKE):
repeat with theMsg in theMsgs
delete theMsg -- puts in Deleted Items folder
delete theMsg -- deletes completely
end repeat