Created
July 6, 2012 05:48
-
-
Save cweirup/3058303 to your computer and use it in GitHub Desktop.
Outlook 2011 Attachment Remover AppleScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- AppleScript to remove attachment from selected messages in Outlook 2011 | |
-- Incorporates code from these sources: | |
-- http://dice.neko-san.net/2012/03/strip-attachments-from-outlook-2011-using-applescript/ | |
-- http://stackoverflow.com/questions/9617029/how-to-get-the-a-file-url-in-osx-with-applescript-or-a-shell-script (for path2url function) | |
on path2url(thepath) | |
-- Needed to properly URL encode the path | |
return do shell script "python -c \"import urllib, sys; print (urllib.quote(sys.argv[1]))\" " & quoted form of thepath | |
end path2url | |
tell application "Microsoft Outlook" | |
-- Get currently selected message | |
-- FOR NOW JUST SELECT ONE | |
tell application "Finder" | |
try | |
tell me to set folder_path to (choose folder with prompt "Select a folder to save the attachments") as text | |
on error number -128 | |
-- User canceled the action | |
display dialog "No folder selected. Please rerun the script and select a folder." with icon 2 | |
return number | |
-- Exit the script | |
end try | |
end tell | |
set selectedMessages to current messages | |
set attachmentSizes to 0 | |
set fileDownloadedList to "Attachments Removed:<br>------------------------<br>" | |
if selectedMessages is {} then | |
display dialog "Please select a message first then run the script" with icon 1 | |
return | |
end if | |
-- Check for attachments | |
repeat with theMessage in selectedMessages | |
-- Get the attachments | |
set attachmentlist to every attachment in theMessage | |
repeat with anAttachment in attachmentlist | |
set a to anAttachment | |
try | |
set attachmentSize to file size of a | |
set fileDownloaded to folder_path & name of a | |
-- Save the attachment | |
save a in folder_path & name of a | |
-- Log the file sizes and file list | |
set attachmentSizes to attachmentSizes + attachmentSize | |
set fileDownloadedURL to "file://localhost" & my path2url(POSIX path of fileDownloaded) | |
set fileDownloadedList to fileDownloadedList & "Attachment: <a href=\"" & fileDownloadedURL & "\">" & fileDownloaded & "</a><br>" | |
on error | |
exit repeat | |
end try | |
end repeat | |
set content of theMessage to fileDownloadedList & "<br>" & content of theMessage | |
-- Need to delete the attachments here, otherwise we throw index errors | |
-- Becase Outlook resets the list when deleting, need to just keep deleting the first | |
-- item each time until all are removed | |
set attachmentCount to count of attachmentlist | |
repeat (attachmentCount) times | |
delete item 1 of attachmentlist | |
end repeat | |
end repeat | |
end tell |
Has anyone updated this script to work with Microsoft Outlook 2016?
I have a new version of this script for Outlook 2016. Specifically, it handles the issues with saving files in the Sandbox. It does require the use of Hazel to accomplish this.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If you want to only save and remove attachments above a certain size, you can use the "file size" property on the attachment object, which is an integer. Something like:
Hope that helps!