用于过滤收件箱中主题电子邮件的Applescript

时间:2011-11-16 17:40:15

标签: applescript

我正在尝试编写一个执行以下工作的脚本:它遍历邮箱中的所有电子邮件,找到其主题行中包含“French”字样的电子邮件,然后复制这些邮件的所有主题行电子邮件在文本文件中。这就是我想出来的

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 个答案:

答案 0 :(得分:1)

你的主要问题是TextEdit中的段落数量和电子邮件消息的数量彼此无关,所以如果你指望消息的数量,那么TextEdit将无法理解它。例如,您可能有50条消息,但TextEdit没有50个段落,因此它有错误。因此,我们只为TextEdit使用一个单独的计数器。

我也做了其他改动。我经常看到错误发生在一个“告诉应用程序”代码块在另一个...所以我分开了它们。另请注意,任何“tell application”块中的唯一代码只是该应用程序处理所需的代码。这也避免了错误。这些都是编程时的好习惯。

因此请尝试一下......

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