Applescript, который фильтрует строку темы писем в Inbox - PullRequest
0 голосов
/ 16 ноября 2011

Я пытаюсь написать сценарий, который выполняет следующую работу: он просматривает все электронные письма в почтовом ящике, находит те, которые содержат слово «французский» в строке темы, а затем копирует все строки темы этих сообщений.электронные письма в текстовом файле.Вот что я придумал

tell application "TextEdit"
    make new document
end tell

tell application "Mail"
    tell the mailbox "Inbox" of account "tigeresque@gmail.com"
        set numm to count of messages
            repeat with kk from 1 to numm
                set wordsub to subject of the message kk
                tell application "TextEdit"
                    if "French" is in wordsub then
                        set paragraph kk of front document to wordsub & return
                    end if
                end tell
            end repeat
    end tell
end tell

К сожалению, я продолжаю получать сообщение об ошибке

"TextEdit получил ошибку: индекс события слишком велик, чтобы быть действительным."

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

1 Ответ

1 голос
/ 17 ноября 2011

Ваша основная проблема заключается в том, что количество абзацев в TextEdit и количество сообщений электронной почты не имеют никакого отношения друг к другу, поэтому, если вы рассчитываете на количество сообщений, TextEdit не поймет этого. Например, у вас может быть 50 сообщений, но TextEdit не имеет 50 абзацев, поэтому он содержит ошибки. Поэтому мы просто используем отдельный счетчик для TextEdit.

Я также внес другие изменения. Я часто вижу ошибки, возникающие из-за того, что один блок кода "сказать приложение" находится внутри другого ... поэтому я разделил их. Также обратите внимание, что единственный код внутри любого блока «сказать приложение» - это только то, что необходимо для обработки этого приложения. Это также позволяет избежать ошибок. Это хорошие привычки при программировании.

Поэтому попробуй ...

set searchWord to "French"
set emailAddress to "tigeresque@gmail.com"

tell application "Mail"
    set theSubjects to subject of messages of mailbox "INBOX" of account emailAddress
end tell

set paraCounter to 1
repeat with i from 1 to count of theSubjects
    set thisSubject to item i of theSubjects
    if thisSubject contains searchWord then
        tell application "TextEdit"
            set paragraph paraCounter of front document to thisSubject & return
        end tell
        set paraCounter to paraCounter + 1
    end if
end repeat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...