[英]AppleScript and Mail.app: checking if new messages contain a string
I'm writing a script to check if a particular web form has been submitted. 我正在编写一个脚本来检查是否已提交特定的Web表单。
The script so far reads thusly: 到目前为止,该脚本如下所示:
tell application "Mail"
check for new mail
set newmail to get the unread count of inbox
repeat with msg in newmail
if msg's subject contains "New newsletter built by" then
return msg's subject
end if
end repeat
end tell
I've got an unread email in my inbox for the script to work with, but I still get an error: 我的收件箱中有未读电子邮件供脚本使用,但我仍然收到错误消息:
error "Mail got an error: Can’t make 1 into type specifier." number -1700 from 1 to specifier
Any help at all will be appreciated. 任何帮助都将不胜感激。
Cheers! 干杯!
tell application "Mail"
check for new mail
repeat until (background activity count) = 0
delay 0.5 --wait until all new messages are in the box
end repeat
try
return subject of (first message of inbox whose read status is false and subject contains "New newsletter built by ")
end try
end tell
Applescript is a bit tricky. Applescript有点棘手。 It looks like you're trying to parse the count of the inbox, not the actual inbox.
看起来您正在尝试解析收件箱的计数 ,而不是实际的收件箱。
Try this script instead: 请尝试使用此脚本:
tell application "Mail"
check for new mail
-- instead of getting the unread count of inbox
-- let's set an Applescript variable to every message of the inbox
set myInbox to every message of inbox
repeat with msg in myInbox
-- and look at only the ones that are unread
if read status of msg is false then
-- and if the subject of the unread message is what we want
if msg's subject contains "New newsletter built by" then
-- return it
return msg's subject
end if
end if
end repeat
end tell
adding to what jackjr300 said.... 添加到jackjr300说....
tell application "Mail"
set x to unread count of inbox
check for new mail
delay 3
set y to unread count of inbox
set z to y - x
end tell
if x = y then
say "There is nothing to report"
end if
if z = 1 then
say "You have one new message"
end if
if z = 2 then
say "You have two new messages"
end if
if z = 3 then
say "You have three new messages"
end if
if z = 4 then
say "You have four new messages"
end if
if z = 5 then
say "You have five new messages"
end if
if z = 6 then
say "You have six new messages"
end if
if z = 7 then
say "You have seven new messages"
end if
if z = 8 then
say "You have eight new messages"
end if
if z = 9 then
say "You have nine new messages"
end if
if z = 10 then
say "You have ten new messages"
else
say "You have more than ten new messages"
end if
I've actually solved the issue, so I'm going to post it here should anyone else need help. 我实际上已经解决了这个问题,所以如果其他人需要帮助,我会在这里发布。 Check it:
核实:
tell application "Mail"
check for new mail
set checker to (messages of inbox whose read status is false)
set neworder to number of items in checker
if neworder > 0 then
repeat with i from 1 to number of items in checker
set msg to item i of checker
if msg's subject contains "New newsletter built by " then
return msg's subject
end if
end repeat
end if
end tell
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.