Import From Outlook
Summary: Imports the selected messages from Outlook as .eml files.
Requires: EagleFiler
Install Location: ~/Library/Scripts/Applications/Microsoft Outlook/
Description
The recommended way to import from Outlook is to select some messages and press the capture key. That will import the messages as a new mailbox file. This script is for situations where you want to:
- Import messages as individual .eml files instead of as a mailbox. You can import them into an existing folder if desired.
- Automate importing the selected messages.
Unlike when using the capture key, the unread/flagged status, categories, and project are not preserved.
If you want the script to bring up the options window asking you where import the messages, remove the -- before with asking for options.
Download in Compiled Format · Download in Text Format
Script
on run
tell application "Microsoft Outlook"
set _messages to my messagesFromSelection()
my importMessages(_messages)
end tell
end run
on messagesFromSelection()
tell application "Microsoft Outlook"
with timeout of 5 * 60 seconds
set _selection to selected objects
if _selection is {} then
try
return selected folder's messages -- can't get "selected folder" if "Sent Items" is selected
end try
end if
return current messages
end timeout
end tell
end messagesFromSelection
on importMessages(_messages)
set _paths to {}
repeat with _message in _messages
tell application "Microsoft Outlook"
set _subject to subject of _message
set _source to source of _message
end tell
set _path to my createTempFolder() & "/" & my makeFileName(_subject)
my writeData(_path, _source)
copy _path to end of _paths
end repeat
tell application "EagleFiler"
import files _paths -- with asking for options
end tell
end importMessages
on writeData(_path, _data)
set _file to POSIX file _path
set _fd to open for access _file with write permission
write _data to _fd
close access _fd
end writeData
on createTempFolder()
set _tempFolder to do shell script "mktemp -d -t 'EFImportOutlook'"
return _tempFolder
end createTempFolder
on makeFileName(_subject)
set _clean to my replace(_subject, "/", ":")
set _clean to my replace(_clean, ":", "-")
set _extension to ".eml"
set _hfsPlusLimit to 255
set _max to _hfsPlusLimit - (length of _extension)
set _shortened to my substringToIndex(_clean, _max)
return _shortened & _extension
end makeFileName
on substringToIndex(_string, _index)
if length of _string > _index then
set _end to _index
else
set _end to length of _string
end if
return my join(characters 1 thru _end of _string, "")
end substringToIndex
on replace(_string, _source, _replacement)
return my join(my split(_string, _source), _replacement)
end replace
on join(_list, _sep)
set _temp to AppleScript's text item delimiters
set AppleScript's text item delimiters to _sep
set _result to _list as string
set AppleScript's text item delimiters to _temp
return _result
end join
on split(_string, _sep)
set _temp to AppleScript's text item delimiters
set AppleScript's text item delimiters to _sep
set _result to text items of _string
set AppleScript's text item delimiters to _temp
return _result
end splitLast Modified: 2012-09-18
Running the Script
You can use AppleScript Editor (AppleScript Utility prior to Mac OS X 10.6) to enable Mac OS X’s built-in Script menu. To run the script, just select it from the menu. FastScripts provides a similar menu that supports keyboard shortcuts and other features.