So, way back when I was using Thunderbird, I had this awesome plugin that organized my archived emails by year. It was super handy for finding stuff or just taking a trip down memory lane.
But when I switched to Mail.app, I couldn't find a similar plugin that I liked. Plus, even if one existed, I'd have to install it on every new Mac I got. So, I decided to take matters into my own hands and whip up some AppleScript magic.
In the code, you can pick a folder (sourceFolder) - in my case, it's "Recovered". You also need to specify your account name, like "iCloud" in my code. If your account goes by a different name, like "Exchange" or "Gmail", just tweak that part.
Then there's this variable called "yearsMailbox" at the top of the code, (in my case "Years") which is basically the folder where the emails will end up based on their years. You can rename it if you're feeling fancy.
You can probably make this more efficient by having it map the year folders one time instead of checking every time it wants to move a message, but I feel you're just playing "AppleScript golf" at that point. This works. It works great. Moving on.
tell application "Mail"
-- Specify the parent mailbox where the year folders are located
set yearsMailbox to mailbox "Years" of account "iCloud" -- Adjust if the path is different
-- List of sub-mailboxes under 'Years', each named with a four-digit year
set yearFolders to every mailbox of yearsMailbox
-- Specify the source folder where emails are currently located
set sourceFolder to mailbox "Recovered" -- Replace "SourceFolder" with the name of your folder
repeat with eachMessage in (get messages of sourceFolder)
set messageDate to date received of eachMessage
set messageYear to year of messageDate as string
-- Check if a folder for the year exists and move the message
repeat with eachYearFolder in yearFolders
if name of eachYearFolder is messageYear then
move eachMessage to eachYearFolder
exit repeat
end if
end repeat
end repeat
end tell
Please leave comments below.
No comments:
Post a Comment