我正在尝试编写一个执行以下工作的脚本:它遍历邮箱中的所有电子邮件,找到其主题行中包含“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出错:事件的索引太大而无法生效。”
我已经花了几个小时试图修复它而没有太大的成功。你能看一下我的代码,看看它有什么问题吗?
答案 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