Jag har på lediga stunder pysslat lite. kanske tom @Richard Rönnbäck kan vara intresserad. Jag kör det schemalagt så slipper jag fundera på det:
-- set theFolders to {{{"Exchangekonto", "Brevlåda"}, "Arkivmapp"}, {{"Exchangekonto", "Brevlåda 2"}, "Arkivmapp 2"}}
set theFolders to {{{"Sydsvenskan", "Inkorgen"}, "Arkiv - Inkorgen"}, {{"Sydsvenskan", "Skickat"}, "Arkiv - Skickat"}}
set theNumberOfDaysToSaveInSourceFolder to 365
set theNumberOfMovedMessagesToDisplay to 20
set theShowMoveCountState to true
set theShowErrState to true
--------------------------------------------------
set theKeepLimit to ((current date) - theNumberOfDaysToSaveInSourceFolder * days)
set theErrMsg to ""
set theMoveCount to 0
tell application "Microsoft Outlook"
repeat with theFolder in theFolders
set {theSourceAccount, theSourceFolder, theTargetFolder} to {item 1 of item 1 of theFolder, item 2 of item 1 of theFolder, item 2 of theFolder}
set theFolderCheck to (my doPreflight(theSourceAccount, theSourceFolder, theTargetFolder))
if theFolderCheck is true then
set theMessagesToMove to (messages of mail folder theSourceFolder of exchange account theSourceAccount whose time received < theKeepLimit)
set theMoveCount to (count theMessagesToMove)
set theSubjects to ""
repeat with theItem in theMessagesToMove
set theSubjects to theSubjects & "Till " & theTargetFolder & ": " & subject of theItem & return
move theItem to mail folder theTargetFolder of on my computer
end repeat
else
if theErrMsg is "" then
set theErrMsg to theErrMsg & theFolderCheck
else
set theErrMsg to theErrMsg & return & theFolderCheck
end if
end if
end repeat
if theErrMsg is not "" and theShowErrState is true then
display alert "Okänt fel" message theErrMsg buttons {"OK"}
end if
if theShowMoveCountState is true then
if theMoveCount > theNumberOfMovedMessagesToDisplay then
set theSubjects_trunkated to (my doMakeStringOfList(paragraphs 1 thru theNumberOfMovedMessagesToDisplay of theSubjects, return))
set theSubjects_trunkated to theSubjects_trunkated & return & return & "… och " & (theMoveCount - theNumberOfMovedMessagesToDisplay) & " ytterligare meddelanden."
set A to display alert (theMoveCount as string) & " meddelanden arkiverade" message theSubjects_trunkated buttons {"OK"} giving up after 60
else
set A to display alert (theMoveCount as string) & " meddelanden arkiverade" message theSubjects buttons {"OK"} giving up after 60
end if
end if
end tell
on doPreflight(theSourceAccount, theSourceFolder, theTargetFolder)
set theErr to {}
tell application "Microsoft Outlook"
try
get exchange account theSourceAccount
try
get folder theSourceFolder of exchange account theSourceAccount
on error err
set end of theErr to err
end try
on error err
set end of theErr to err
end try
try
get folder theTargetFolder of on my computer
on error err
set end of theErr to err
end try
end tell
if theErr is {} then
return true
else
return (my doMakeStringOfList(theErr, return))
end if
end doPreflight
on doMakeStringOfList(T, del)
tell me to set oldTID to text item delimiters
tell me to set text item delimiters to del
set T to T as string
tell me to set text item delimiters to oldTID
return T
end doMakeStringOfList