global gScriptName
tell application "Finder"
-- Get this scripts name for the 'on quit' handler below.
set scriptPath to path to me
set scriptNameFull to name of file scriptPath as text
-- Get name of this script, minus the extension
if (offset of "." in scriptNameFull) > 0 then
set gScriptName to (text items 1 thru -2 of scriptNameFull) as string
end if
end tell
tell application "System Events"
tell process gScriptName
keystroke "h" using command down -- Hide this script in the Dock
end tell
end tell
tell application "Mail"
activate
delay 10 -- wait for Mail to redraw the screen before checking for new mail (to prevent possible crash?)
check for new mail
set theMinimumInterval to 0
set theAccountList to ¬
{¬
{account "info" of application "Mail", 15}, ¬
{account "AdSense" of application "Mail", 90}, ¬
{account "PayPal" of application "Mail", 60}, ¬
-- other Mail accounts listed here
}
set theCount to 0
repeat with eachAccount in theAccountList
set theInterval to item 2 of eachAccount
if theInterval ≠ 0 then
set theCount to theCount + 1
if (theCount > 1) then
set theMinimumInterval to my gcd(theInterval, theMinimumInterval)
else
set theMinimumInterval to (theInterval as integer)
end if
end if
end repeat
if theMinimumInterval = 0 then
display dialog "No accounts have been set to check (values greater than 0)."
return
end if
set theMinuteCount to 0
repeat
delay (theMinimumInterval * 60)
set theMinuteCount to theMinuteCount + theMinimumInterval
repeat with eachAccount in theAccountList
set theAccount to item 1 of eachAccount
set theInterval to item 2 of eachAccount
if theInterval ≠ 0 then
set theMod to theMinuteCount mod theInterval
if (theMod = 0) then
check for new mail for theAccount
end if
end if
end repeat
end repeat
end tell
on gcd(a, b)
repeat until b = 0
set x to b
set b to a mod b
set a to x
end repeat
return a
end gcd
on quit
try
set theCommand to "ps axuww | grep '" & gScriptName & "' | grep -v grep | awk '{ print $2 }'"
set myPID to do shell script theCommand
do shell script "kill " & myPID
continue quit
end try
end quit
Without the 'on quit' do shell script code, this script is not able to be quit using Cmd-Q.
If there's a better way to accomplish what I'm after, I'm all ears.
Thanks again,
Ted