performing tedious, repetitive tasks — no matter how small — is monkey-work. automating those tasks makes you just that little bit less like a monkey. if you take a moment to think about it, you may find you’re wasting an awful lot of life on mundanities …
… such as creating and emailing proofs for clients. this script will export a pdf, attach it to an email, then add the recipient, subject line and basic message — all with just three double-clicks.
the first part of the script exports the pdf. exporting pdfs was covered way back in scripting lessons 08 thru 12, so refer back to them if you need an explanation of what’s going on here :
tell application "Adobe InDesign CS4" activate save active document set mgPdfPresets to name of every PDF export preset set mgPdfPreset to choose from list mgPdfPresets with prompt "How you want these done then?" with title "CHOOSE PDF EXPORT PRESET" if mgPdfPreset is false then display dialog "WHATEVER!" buttons "get stuffed" giving up after 1 error number -128 end if set properties of PDF export preferences to properties of PDF export preset (item 1 of mgPdfPreset) set page range of PDF export preferences to all pages set mgFolder to file path of active document tell application "Finder" if (exists folder "PDF" of folder mgFolder) is false then make new folder at mgFolder with properties {name:"PDF"} end if end tell set mgDocName to name of active document set OrigDelims to text item delimiters of AppleScript set text item delimiters of AppleScript to {"."} set mgShortName to text item 1 of mgDocName set text item delimiters of AppleScript to OrigDelims set mgFilePath to mgFolder & "PDF" & ":" & mgShortName & ".pdf" as string tell active document export format PDF type to mgFilePath without showing options end tell end tell tell application "Finder" set mgFile to mgFilePath as alias end tell
this uses the choose from list command which will present the user with a dialog listing their available export presets. it’ll look something like this :
just for shits and giggles we’ve added a surly message for any user who dares to cancel that dialog instead of proceeding.
the last part of that script above gets a reference to the pdf as an alias — ready to attach to the email.
the next part of the script sets up the details for the email. this workflow has a small number of possible email recipients (just the four sales reps who deal directly with clients) — you might want to come up with a different solution if your list is longer :
set mgChoice to choose from list {"macGrunt", "macGroan", "macGrumble", "John"} with prompt "Who you want this sent to?" if mgChoice is false then error number -128 end if set mgChoice to item 1 of mgChoice if mgChoice is "macGrunt" then set mgAddress to "macgrunt@macgrunt.com" else if mgChoice is "macGroan" then set mgAddress to "macgroan@macgrunt.com" else if mgChoice is "macGrumble" then set mgAddress to "macgrumble@macgrunt.com" else if mgChoice is "John" then set mgAddress to "john@macgrunt.com" end if set mgContent to "Hi " & mgChoice & return & return & "Here's your groovy proof" & return
first the user is asked to select from another list that might look something like this :
then, based on that choice, the email address is set. finally verbage for the email content is set.
the last part of the script sets up the actual email and will need to change depending on which email software you are using. for example, this is how you could do it for Mail :
tell application "Mail" activate set mgMessage to make new outgoing message with properties {visible:true, subject:mgShortName, content:mgContent} tell mgMessage make new to recipient with properties {name:mgChoice, address:mgAddress} tell content of mgMessage make new attachment with properties {file name:mgFile} at after last paragraph end tell end tell save mgMessage set visible of mgMessage to true end tell
you’ll notice that, for this workflow, we’re using the shortened filename as our subject line.
this is how it would go if you needed to do the same thing with Outlook :
tell application "Microsoft Outlook" activate set mgMessage to make new outgoing message with properties {subject:mgShortName, content:mgContent} make new recipient at mgMessage with properties {email address:{name:mgChoice, address:mgAddress}} make new attachment at mgMessage with properties {file:mgFile} open mgMessage end tell
you should be able to use these as a starting point — just open the relevant scripting dictionary in script editor to work out the syntax specific to your email software. if it all becomes too hard — google is your friend.
well, that’s it. a relatively small time-saving, but just think how many times you repeat that simple monkey-task every week.