TweetFollow Us on Twitter

Introduction to AppleScripting Microsoft Entourage

Volume Number: 23 (2007)
Issue Number: 05
Column Tag: Scripting

AppleScript Essentials

Introduction to AppleScripting Microsoft Entourage

by Ben Waldie

For some time now, we have been discussing scripting the Microsoft Office applications, partially in preparation for the forthcoming release of Office 2008, in which Microsoft has announced that Visual Basic macros will no longer be supported. So far, we have explored the AppleScript support in Microsoft Word, Excel, and PowerPoint, three applications that currently (in Office 2004) include Visual Basic macro support. This month, we are going to discuss the fourth major Office application, Entourage, a popular email and project management client.

Unlike the other Office applications, Entourage does not include Visual Basic macro support. So, when Office 2008 is released, there won't be any macros requiring conversion. However, Entourage does possess fairly comprehensive AppleScript support. Using AppleScript, it is possible to manipulate various types of elements in Entourage, including messages, contacts, events, tasks, notes, and more. In this month's column, we will explore ways of manipulating some of these elements. Let's get started.

Working with Messages

Probably the primary elements with which you will want to interact are messages. Using AppleScript, it is possible to create messages, read messages, send messages, move messages from one folder to another, and more.

In Entourage, there are two primary types of messages, incoming and outgoing. While each of these types possesses its own set of properties, both types inherit a number of common properties from the more generic message class.

Creating an Outgoing Message

To create a new outgoing message, use the make command, followed by the class outgoing message, and optionally, properties to be assigned to the message. For example:

set theSubject to "Some Subject"
set theBody to "Some Body"
tell application "Microsoft Entourage"
   make new outgoing message with properties 
{subject:theSubject, content:theBody}
end tell
--> outgoing message id 11285 of application "Microsoft Entourage"

Take note that, when creating a new outgoing message, it will not automatically be visible in Entourage's interface. Regardless, it is created. To make a newly created outgoing message visible in Entourage's interface, the message must be opened. Fortunately, the make command will return as its result a reference to the newly created message. This reference may be placed into a variable, which can then be opened using the open command, as demonstrated below.

set theSubject to "Some Subject"
set theBody to "Some Body"
tell application "Microsoft Entourage"
   set theMessage to make new outgoing message with properties
{subject:theSubject, content:theBody}
   open theMessage
end tell

Adding Recipients to a Message

In the examples that we have discussed above, we have specified certain properties for the outgoing message, which are assigned when the message is created. Specifically, we have specified a subject and a body for the message. However, an outgoing message cannot be sent without first assigning it recipients.

When assigning recipients to a message, each recipient must consist of two bits of information. The first bit of information is the address, and the second is the type of recipient (to, cc, bcc). The address of a recipient is broken down even further, into two more parts - an email address and a display name (i.e. first and last name of the recipient).

To accommodate this, Entourage's AppleScript support includes a recipient class, which possesses an address property and a recipient type property. The value of a recipient's address property translates to the address class in Entourage, which has a display name property and an address property of its own. Put together in AppleScript code, this all translates to the following for each recipient in the list of recipients:

{address:{display name:"RecipientName", 
address:"RecipientEmailAddress"}, 
recipient type:to recipient}

Now, let's put this together to assign recipients as a message is created. The following example code will create an outgoing message in Entourage, addressing it to Ben Waldie, and copying MacTech Editorial, the result of which is shown in figure 1.

set theSubject to "Some Subject"
set theBody to "Some Body"
tell application "Microsoft Entourage"
   set theRecipients to {{address:{display name:"Ben Waldie",
address:"ben@automatedworkflows.com"}, recipient type:to recipient},
{address:{display name:"MacTech Editorial", address:"editorial@mactech.com"},
recipient type:cc recipient}}
   set theMessage to make new outgoing message with properties 
{recipient:theRecipients, subject:theSubject, content:theBody}
   open theMessage
end tell


Figure 1. An Outgoing Message with Recipients

Adding Attachments to an Outgoing Message

Another common task when creating outgoing messages is adding attachments. One or more files may be added to an outgoing message as attachments by providing the paths to those files when the message is created, as follows:

set theSubject to "Some Subject"
set theBody to "Some Body"
set theAttachment to choose file with prompt "Select a file to attach:" without invisibles
tell application "Microsoft Entourage"
   set theRecipients to {{address:{display name:"Ben Waldie", 
address:"ben@automatedworkflows.com"}, recipient type:to recipient}, 
{address:{display name:"MacTech Editorial", 
address:"editorial@mactech.com"}, 
recipient type:cc recipient}}
   set theMessage to make new outgoing message with properties 
{recipient:theRecipients, subject:theSubject, 
content:theBody, attachments:theAttachment}
   open theMessage
end tell

In this case, we have only added a single attachment to an outgoing message. Adding multiple attachments is done in the same manner. Just specify a list of paths, rather than a single path. Figure 2 shows the result of the previous example code.


Figure 2. An Outgoing Message with an Attachment

Sending an Outgoing Message

Once you have created an outgoing message, you will most likely want to send it. Earlier, we discussed opening outgoing messages, since they are not visible by default. Well, if you are going to immediately send an outgoing message after creating it, then you might not need to open it. Regardless, to send a message, use the send command, followed by a list of the messages you want to send. For example:

send theMessage

Please note that, when first sending a message via AppleScript, Entourage will display a dialog notifying the user that a script is attempting to send a message (figure 3). The user must click a Send button before the script can proceed. Keep this in mind, and be prepared for this occurrence.


Figure 3. Entourage's Send Message Warning Dialog

Working with Incoming Messages

So far, we have been discussing ways of working with outgoing messages. Incoming messages possess most of the same properties that outgoing messages possess, so interacting with them is very similar.

To retrieve a list of currently selected incoming messages, reference the selection property of the application. For example:

tell application "Microsoft Entourage"
   selection
end tell
--> {incoming message id 136 of application "Microsoft Entourage"}

Once you have a reference to an incoming message, you can retrieve any of its properties. For example, the following code will retrieve the subject of a selected incoming message.

tell application "Microsoft Entourage"
   set theSelection to selection
   set theCurrentMessage to item 1 of theSelection
   subject of theCurrentMessage
end tell
--> "RE: Meeting Today!"

Forwarding a Message

To forward a message to another recipient, you can use Entourage's forward command. This command requires a reference to a message to be forwarded as its direct parameter. Optional parameters include a to recipient for the forwarded message, and whether the forwarded message's window should be opened in Entourage's interface. For example:

tell application "Microsoft Entourage"
   set theSelection to selection
   set theCurrentMessage to item 1 of theSelection
   forward theCurrentMessage to "ben@automatedworkflows.com" 
with opening window
end tell
--> window "FW: Meeting Today!" of application 
"Microsoft Entourage"

Take note that the result of the forward command in the example code above is a reference to the window of the forwarded message. This is because we specified that the forwarded message should be opened. If we had specified for the message not to be opened, then an outgoing message reference would have been returned instead. For example:

tell application "Microsoft Entourage"
   set theSelection to selection
   set theCurrentMessage to item 1 of theSelection
   forward theCurrentMessage to "ben@automatedworkflows.com" 
without opening window
end tell
--> outgoing message id 11277 of application 
"Microsoft Entourage"

Moving a Message to a Folder

You may have a need to move incoming messages from one folder to another via AppleScript. To do this, you can use the move command. When using this command, you must provide a reference to the message you want to move, along with a reference to the folder into which you would like the message to be moved. For example, the following code would move the currently selected message into a folder called "Some Folder".

tell application "Microsoft Entourage"
   set theSelection to selection
   set theCurrentMessage to item 1 of theSelection
   move theCurrentMessage to folder "Some Folder"
end tell

Keep in mind that since folders have a hierarchy in Entourage, then they must be addressed within this hierarchy via AppleScript. The following example code would move a message into a folder named "Another Folder", which resides inside of a folder named "Some Folder".

tell application "Microsoft Entourage"
   set theSelection to selection
   set theCurrentMessage to item 1 of theSelection
   move theCurrentMessage to folder "Another Folder" 
of folder "Some Folder"
end tell

Working with Contacts

Now that we have discussed ways of interacting with messages in Entourage, let's discuss ways of interacting with other scriptable elements. First, we will take a look at contacts.

To create a new contact in Entourage, use the make command, much in the same way that we discussed creating outgoing messages. For the sake of efficiency, you will probably want to apply properties to the contact as it is created. To do this, use the make command's optional with properties parameter.

The following example code demonstrates how this is done. This particular code will create a contact, complete with a first name, last name, company, job title, business address, business web page address, and email address. Figure 4 shows an example of the newly created contact.

tell application "Microsoft Entourage"
   make new contact with properties 
{first name:"Ben", last name:"Waldie", company:"Automated Workflows, LLC", 
job title:"President", business phone number:"610-935-0652", 
business address:{street address:"116 Cold Stream Road", 
city:"Phoenixville", state:"PA", zip:"19460", country:"USA"}, 
business web page:"http://www.automatedworkflows.com", 
email address:{{label:"Work", contents:"ben@automatedworkflows.com"}}}
end tell
--> contact id 18 of application "Microsoft Entourage"


Figure 4. A Newly Created Contact

Please note that, in the example code above, AppleScript records were used to assign values to certain contact properties. This is because these properties reference classes that contain properties of their own. For example, the business address property of a contact references a value of class postal address. The postal address class possesses street address, city, state, zip, and country properties.

Working with Events

AppleScript may also be used to interact with calendar events in Entourage. Like outgoing messages and contacts, events may be created using the make command. For example, the following code will create a new event for this year's Worldwide Developer's Conference in San Francisco. Figure 5 shows an example of the newly created event.

set theStartDate to date "Monday, June 11, 2007 12:00:00 AM"
set theEndDate to date "Friday, June 15, 2007 11:59:00 PM"
tell application "Microsoft Entourage"
   make new event with properties {subject:"WWDC", 
location:"Moscone West, San Francisco, CA",
content:"Apple's Worldwide Developer's Conference", 
start time:theStartDate, end time:theEndDate}
end tell
--> event id 50 of application "Microsoft Entourage"


Figure 5. A Newly Created Event

In Conclusion

Like the other Microsoft Office applications, Entourage has fairly comprehensive AppleScript support, and we have really only scratched the surface in this month's column. You are encouraged to explore some of the other things that can be done via scripting, such as interacting with tasks, triggering AppleScripts from Entourage rules, and more. Be sure to view Entourage's AppleScript dictionary for a complete list of its AppleScript terminology.

Another great way to get started with scripting Entourage is to download some of the many freeware and shareware AppleScripts for Entourage that have been written by third-party developers, such as Paul Berkowitz. Many of these scripts are available from the ScriptBuilders section of MacScripter.net. http://scriptbuilders.net//

Note to Readers

Many of you who are regular MacTech readers know that I have been writing monthly AppleScript columns for MacTech for several years now. In addition to writing for MacTech, I've also been busy running Automated Workflows, LLC, my AppleScript and workflow automation consulting firm. As my company has grown, so have my commitments. For this reason, I have decided that it is time to begin focusing more on my company. Therefore, this month's column will serve as my final regular MacTech column.

Throughout the years, I have received numerous emails from you, the readers. I want to thank you for your many nice comments and questions along the way. As always, my email inbox will remain open, and you are welcome to continue sending your comments and questions to me in the future at ben@automatedworkflows.com. I will also be attending WWDC 2007, and I hope to have the opportunity to meet some of you there, as well.

For a complete list of my MacTech columns, please be sure to visit the "Archives" section of the MacTech website. You can also find links to all of my MacTech columns, as well as many of my other AppleScript and Automator articles, tips, techniques, and books on my website at http://www.automatedworkflows.com.

Keep scripting!


Ben Waldie is the author of the best selling books "AppleScripting the Finder" and the "Mac OS X Technology Guide to Automator", available from http://www.spiderworks.com, as well as an AppleScript Training CD, available from http://www.vtc.com. Ben is also president of Automated Workflows, LLC, a company specializing in AppleScript and workflow automation consulting. For years, Ben has developed professional AppleScript-based solutions for businesses including Adobe, Apple, NASA, PC World, and TV Guide. For more information about Ben, please visit http://www.automatedworkflows.com, or email Ben at ben@automatedworkflows.com.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

NTFS 15.0.911 - $19.95
NTFS breaks down the barriers between Windows and macOS. Paragon NTFS effectively solves the communication problems between the Mac system and NTFS. Write, edit, copy, move, delete files on NTFS... Read more
Airfoil 5.6.3 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more
ExpanDrive 6.0.16 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more
Smultron 9.4.2 - Easy-to-use, powerful t...
Smultron 9 is an elegant and powerful text editor that is easy to use. Use it to create or edit any text document. Everything from a web page, a note or a script to any single piece of text or code.... Read more
Typinator 7.3 - Speedy and reliable text...
Typinator turbo-charges your typing productivity. Type a little. Typinator does the rest. We've all faced projects that require repetitive typing tasks. With Typinator, you can store commonly used... Read more
coconutBattery 3.6.4 - Displays info abo...
With coconutBattery you're always aware of your current battery health. It shows you live information about your battery such as how often it was charged and how is the current maximum capacity in... Read more
iShowU Instant 1.2.0 - Full-featured scr...
iShowU Instant gives you real-time screen recording like you've never seen before! It is the fastest, most feature-filled real-time screen capture tool from shinywhitebox yet. All of the features you... Read more
TrailRunner 3.8.1840 - Route planning fo...
TrailRunner is the perfect companion for runners, bikers, hikers, and all people wandering under the sky. Plan routes on a geographical map. Import GPS or workout recordings and journalize your... Read more
NetShade 7.1 - Browse privately using an...
NetShade is an anonymous proxy and VPN app+service for Mac. Unblock your Internet through NetShade's high-speed proxy and VPN servers spanning seven countries. NetShade masks your IP address as you... Read more
1Password 6.8.2 - Powerful password mana...
1Password is a password manager that uniquely brings you both security and convenience. It is the only program that provides anti-phishing protection and goes beyond password management by adding Web... Read more

Thimbleweed Park (Games)
Thimbleweed Park 1.0.0 Device: iOS Universal Category: Games Price: $9.99, Version: 1.0.0 (iTunes) Description: A brand new adventure game from Ron Gilbert and Gary Winnick, creators of the classics Monkey Island and Maniac Mansion!... | Read more »
The best simulation games on mobile
There's nothing like a good sim -- from the seemingly ridiculous to the incredibly mundane, you can be there's a simulation game out there for your every whim. [Read more] | Read more »
INKS guide - how to create works of pinb...
INKS puts a clever new spin on everyone's favorite classic arcade game, pinball. The core mechanics are the same -- keep a little ball pinging around the board for as long as possible without letting it fall into the precarious holes in the board.... | Read more »
Warbands: Bushido (Games)
Warbands: Bushido 1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0 (iTunes) Description: Warbands:Bushido is a miniatures board game with cards, miniatures, dice and beautiful terrains to fight on, with both... | Read more »
The best mobile games like Divinity: Ori...
Divinity: Original Sin 2 launched this week to the excitement of RPG fans everywhere. The game, which derives a lot of of its story and mechanics from old-school isometric RPGs and Dungeons & Dragons, has unseated PlayerUnknown's... | Read more »
Iron Marines guide - beginner tips and t...
Iron Marines is a brilliant RTS title that feels a bit like Starcraft. It's got a sci-fi setting and some of the most spectacular strategy mechanics we've seen in mobile games to date. With that said, the RTS genre can be a bit tricky to break... | Read more »
The best new games we played this week -...
The work week can be tough, but on the bright side, it's almost overandthere are bunches of brand new games to try out this weekend. This week definitely makes up for last week's sleepiness ten-fold. We've got one of the finest RTS game on mobile... | Read more »
Through the Ages (Games)
Through the Ages 1.0.60 Device: iOS Universal Category: Games Price: $9.99, Version: 1.0.60 (iTunes) Description: The offical adaptation of Vlaada Chvátil’s strategy classic, the second best board game ever by Board Game Geek website... | Read more »
The best RTS games like Iron Marines
Iron Marines launched today, and it's definitely taking the mobile gaming world by storm. In fact, our reviews editor Campbell says it's "quite possibly the best real-time strategy game on the App Store." If you're looking for more real-time... | Read more »
Uri: The Sprout of Lotus Creek (Games)
Uri: The Sprout of Lotus Creek 1.0.5 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0.5 (iTunes) Description: Published by Fantastic Games IntroductionDesigned by DreamTree Games(An indie games studio in Malaysia ) | Read more »

Price Scanner via MacPrices.net

12-inch and 9-inch Apple iPad Pros, Certified...
Apple has Certified Refurbished 2016 12″ WiFi iPad Pros available starting at $589. An Apple one-year warranty is included with each model, and shipping is free: – 32GB 12″ iPad Pro WiFi: $589... Read more
QuickerTek Announces Solar PV Chargers for US...
Wichita, Kansas based QuickerTek has announced its new 30 Watt and 60 Watt USB Type-C Solar Juicz Chargers. These solar panels are the only products of their kind, featuring the USB 3.1 adapter cable... Read more
Apple refurbished 128GB iPhone 6s and 6s Plus...
Apple has Certified Refurbished 128GB iPhone 6s and 6s Plus’ available for up to $100 off the price of new models. Space Gray, Silver, Gold, and Rose Gold models are available. Each phone comes... Read more
13-inch 2.3GHz Silver MacBook Pros on sale fo...
B&H Photo has 2017 13″ 2.3GHz Silver MacBook Pros in stock today and on sale for $100 off MSRP, each including free shipping plus NY & NJ sales tax only: – 13-inch 2.3GHz/128GB Silver... Read more
12-inch 64GB iPad Pros available for $749, $5...
MacMall has 12″ 64GB iPad Pros on sale for $749 including free shipping. Their price is $50 off MSRP. Read more
Sunday deal: 10-inch 256GB iPad Pros for $699...
MacMall has 10.5″ 256GB WiFi iPad Pros on sale today for $699 including free shipping. That’s $100 off MSRP. Read more
2017 12-inch 1.2GHz Retina MacBooks on sale f...
Amazon has 2017 12″ 1.2GHz Retina MacBooks on sale for $100 off MSRP. Shipping is free: 12″ 1.2GHz Space Gray MacBook: $1199 $100 off MSRP 12″ 1.2GHz Silver MacBook: $1199 $100 off MSRP 12″ 1.2GHz... Read more
Apple Certified Refurbished 21-inch and 27-in...
Apple is now offering a full line of Certified Refurbished 2017 21″ and 27″ iMacs. Models start at $1019 and range up to $350 off original MSRP. Apple’s one-year warranty is standard, and shipping is... Read more
Apple now offering Certified Refurbished 2017...
Apple is now offering Certified Refurbished 2017 12″ Retina MacBooks for up to $240 off the cost of new models. Apple will include a standard one-year warranty with each MacBook, and shipping is free... Read more
Steve Jobs’ Democratization Of The Smartphone...
Can it be only ten years since Steve Jobs introduced the world to the iPhone and changed everything? Jobs and Apple didn’t invent the smartphone. IBM designed a primitive one called SIMON in 1992,... Read more

Jobs Board

*Apple* Solutions Consultant - Apple Inc. (U...
…about helping others on a team while also delighting customers? As an Apple Solutions Consultant (ASC), you will discover customers needs and help connect them Read more
Software/Data Engineer, *Apple* Media Produ...
Job Summary Apple Media Products is the team behind the App Store, Apple Music, iTunes, and many other high profile products on iPhone, Mac and AppleTV. Our Data Read more
SW Engineer , *Apple* Media - Apple Inc. (U...
Job Summary Our team is responsible for exposing Apple Media content and services to the world, and building the infrastructure for next generation internal and Read more
*Apple* Data Center Site Selection and Strat...
Job Summary As Apple 's products and services scale the globe, the Data Center Affairs team works behind the scenes to secure infrastructure for Apple 's data Read more
*Apple* Professional Learning Specialist - A...
Job Summary The Apple Professional Learning Specialist is a full-time position for one year with Apple in the Yuma, AZ area. This position requires a high Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.