TweetFollow Us on Twitter

More Fun With AppleScript

Volume Number: 20 (2004)
Issue Number: 2
Column Tag: Programming

Getting Started

by Dave Mark

More Fun With AppleScript

In last month's column, we installed Script Menu to help us organize our scripts, and then started digging into the Finder's AppleScript dictionary. Fantastic stuff! Hopefully, you've had a chance to play. If not, launch Script Editor, select Library from the Window menu, then double-click on the Finder entry in the Library list. A Finder dictionary window should appear.

Click on the line in the left pane labeled Finder Basics. The classes and commands associated with the Finder Basics AppleScript suite will appear (see Figure 1). Notice that the Finder Basics are divided into Properties and Elements. Think of properties as class data and the elements as objects within the class.


Figure 1. The Finder Basics dictionary entries.

For example, go into the Script Editor and type this script:

tell application "Finder"
   get name
end tell

When you run this script, here's what appears in the results field:

"Finder"

This is the value of the name property of the Finder. If you are running Panther, here's the result of the command get version:

"10.3"

Here's an interesting one. First, do a get startup disk:

startup disk of application "Finder"

Now do a get name of startup disk:

"Macintosh HD"

See the difference? Startup disk is a reference to the startup disk, whereas name of startup disk is a string containing the name of the startup disk. If you look in Figure 1, you'll see that startup disk is of type disk. The disk class is defined in the Containers and folders suite. The class is shown in Figure 2. Notice that the dictionary shows the plural form of disk as disks. The dictionary also shows the elements and properties of the disk class.


Figure 2. The disk class entries of the Containers and folders suite.

Try the command get format of startup disk. Remember, format is a property of the disk class and startup disk is defined as being of class disk. Here's the result on my Mac:

Mac OS Extended format

Now try get journaling enabled of startup disk. Here's the result:

true

As you might expect, Boolean properties return either true or false. The command get ignore privileges of startup disk returns:

false

Finder Basics - Elements

Go back to Figure 1 and take a look at the elements in the Finder Basics suite. These are the objects that you might expect the Finder to encounter. What do you think the result will be of running this script:

tell application "Finder"
   get items
end tell

It helps to have a sense of the item class. An item is basically a generic object - pretty much anything that could exist in a Finder window or on the desktop. Here's the result I got when I ran the script on my Mac:

{startup disk of application "Finder", disk "Macintosh HD" of application 
"Finder", folder "AE Monitor 1.0" of desktop of application "Finder", document file 
"DSC_0751.JPG" of desktop of application "Finder", folder "InDesign CS Example Scripts" 
of desktop of application "Finder", folder "UI Element Inspector" of desktop of application 
"Finder", alias file "Warcraft III" of desktop of application "Finder", folder "wedding_pics" 
of desktop of application "Finder", document file "Xcode notes" of desktop of application "Finder"}

Look through this list of items. Note the curly braces, necessary to making this a proper list. Take a look at the nomenclature, especially the use of the word "of" all over the place. Think containers/enclosures, items within items within items.

Figure 2 shows the listing of the Finder items suite in a dictionary window. Check out the list of properties. Note that an item has an index. Look in the list of items in the previous list, returned by the get items command. What do you think will happen when I run the command get item 2. Here's my result:

disk "Macintosh HD" of application "Finder"


Figure 3. The item class in the Finder items suite.

As you might expect, get item 2 returns the second item in the list returned by get items. Now, what do you suppose you'd get from this command:

get container of item 2

In my case, I got:

folder "Dave Mark's Computer" of application "Finder"

Brave New Make

So far, all we've done is suck information out of the Finder. Let's try making something.

In the Finder's dictionary window, click on the Commands line in the Standard Suite. The commands supported by all subsequent suites are listed. One of these is the make command. The details are shown in Figure 4.


Figure 4. Details on the make command.

Here's a script to create a new folder at the current insertion location (the desktop).

tell application "Finder"
   make new folder with properties {name:"blap"}
end tell

This tells the Finder to create a new folder at the current insertion location (since I didn't specify a new location) with the specified properties. Since I only specified a single property, this will be pretty simple. I ran this script and a new folder named "blap" appeared on my desktop. Here's the result returned by my script:

folder "blap" of folder "Desktop" of folder "davemark" of folder "Users" 
of startup disk of application "Finder"

Does this make sense? You can see the containment hierarchy as it walks its way out from the new folder to the top of my hard drive and Finder itself.

Now that "blap" exists, let's try running the script again. Hrm. As you can see in Figure 5, we got an error, telling us that the folder already exists.


Figure 5. An error is reported when I try creating a folder that already exists. Hrm.

Having Script Editor report the error is very useful if you are testing your script or just playing. But if you deliver this script as a compiled entity to a user, you'll want the program to handle the errors itself. Here's a new version of the script:

tell application "Finder"
   try
      make new folder with properties {name:"blap"}
   on error error_message
      display dialog error_message
   end try
end tell

Running this script produces the dialog shown in Figure 6. Much better. Now the script uses a try block and a corresponding on error block to pass the incoming error message to the display dialog command.


Figure 6. A simple error dialog.

Here's the result of running this script (I clicked the OK button):

{button returned:"OK"}

Till Next Month...

Hopefully, you are getting a bit more familiar with the AppleScript Finder dictionary and the way you can take advantage of properties, elements, and commands. Now that you have a sense of the Finder, open up some other dictionaries. A great one to play with is the TextEdit dictionary. A lovely place to create text elements and copy them to the clipboard for use in other applications. Try your hand at manipulating TextEdit. See what you can do with it.

We will return to AppleScript at some point (I love it too much not to) but next month's column is going back to Cocoa. I am heading down to Atlanta to Aaron Hillegass' Big Nerd Ranch for a week of intensive Cocoa training. I am very excited about this. Model View Controller, Model View Controller. See you next month! J


Dave Mark is a long-time Mac developer and author and has written a number of books on Macintosh development, including Learn C on the Macintosh, Learn C++ on the Macintosh, and The Macintosh Programming Primer series. Be sure to check out Dave's web site at http://www.spiderworks.com.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Hazel 5.3 - Create rules for organizing...
Hazel is your personal housekeeper, organizing and cleaning folders based on rules you define. Hazel can also manage your trash and uninstall your applications. Organize your files using a familiar... Read more
Duet 3.15.0.0 - Use your iPad as an exte...
Duet is the first app that allows you to use your iDevice as an extra display for your Mac using the Lightning or 30-pin cable. Note: This app requires a iOS companion app. Release notes were... Read more
DiskCatalogMaker 9.0.3 - Catalog your di...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
Maintenance 3.1.2 - System maintenance u...
Maintenance is a system maintenance and cleaning utility. It allows you to run miscellaneous tasks of system maintenance: Check the the structure of the disk Repair permissions Run periodic scripts... Read more
Final Cut Pro 10.7 - Professional video...
Redesigned from the ground up, Final Cut Pro combines revolutionary video editing with a powerful media organization and incredible performance to let you create at the speed of thought.... Read more
Pro Video Formats 2.3 - Updates for prof...
The Pro Video Formats package provides support for the following codecs that are used in professional video workflows: Apple ProRes RAW and ProRes RAW HQ Apple Intermediate Codec Avid DNxHD® / Avid... Read more
Apple Safari 17.1.2 - Apple's Web b...
Apple Safari is Apple's web browser that comes bundled with the most recent macOS. Safari is faster and more energy efficient than other browsers, so sites are more responsive and your notebook... Read more
LaunchBar 6.18.5 - Powerful file/URL/ema...
LaunchBar is an award-winning productivity utility that offers an amazingly intuitive and efficient way to search and access any kind of information stored on your computer or on the Web. It provides... Read more
Affinity Designer 2.3.0 - Vector graphic...
Affinity Designer is an incredibly accurate vector illustrator that feels fast and at home in the hands of creative professionals. It intuitively combines rock solid and crisp vector art with... Read more
Affinity Photo 2.3.0 - Digital editing f...
Affinity Photo - redefines the boundaries for professional photo editing software for the Mac. With a meticulous focus on workflow it offers sophisticated tools for enhancing, editing and retouching... Read more

Latest Forum Discussions

See All

New ‘Zenless Zone Zero’ Trailer Showcase...
I missed this late last week, but HoYoverse released another playable character trailer for the upcoming urban fantasy action RPG Zenless Zone Zero. We’ve had a few trailers so far for playable characters, but the newest one focuses on Nicole... | Read more »
Get your heart pounding quicker as Autom...
When it comes to mobile battle royales, it wouldn’t be disrespectful to say the first ones to pop to mind would be PUBG Mobile, but there is one that perhaps doesn’t get the worldwide recognition it should and that's Garena’s Free Fire. Now,... | Read more »
‘Disney Dreamlight Valley Arcade Edition...
Disney Dreamlight Valley Arcade Edition () launches beginning Tuesday worldwide on Apple Arcade bringing a new version of the game without any passes or microtransactions. While that itself is a huge bonus for Apple Arcade, the fact that Disney... | Read more »
Adventure Game ‘Urban Legend Hunters 2:...
Over the weekend, publisher Playism announced a localization of the Toii Games-developed adventure game Urban Legend Hunters 2: Double for iOS, Android, and Steam. Urban Legend Hunters 2: Double is available on mobile already without English and... | Read more »
‘Stardew Valley’ Creator Has Made a Ton...
Stardew Valley ($4.99) game creator Eric Barone (ConcernedApe) has been posting about the upcoming major Stardew Valley 1.6 update on Twitter with reveals for new features, content, and more. Over the weekend, Eric Tweeted that a ton of progress... | Read more »
Pour One Out for Black Friday – The Touc...
After taking Thanksgiving week off we’re back with another action-packed episode of The TouchArcade Show! Well, maybe not quite action-packed, but certainly discussion-packed! The topics might sound familiar to you: The new Steam Deck OLED, the... | Read more »
TouchArcade Game of the Week: ‘Hitman: B...
Nowadays, with where I’m at in my life with a family and plenty of responsibilities outside of gaming, I kind of appreciate the smaller-scale mobile games a bit more since more of my “serious" gaming is now done on a Steam Deck or Nintendo Switch.... | Read more »
SwitchArcade Round-Up: ‘Batman: Arkham T...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for December 1st, 2023. We’ve got a lot of big games hitting today, new DLC For Samba de Amigo, and this is probably going to be the last day this year with so many heavy hitters. I... | Read more »
Steam Deck Weekly: Tales of Arise Beyond...
Last week, there was a ton of Steam Deck coverage over here focused on the Steam Deck OLED. | Read more »
World of Tanks Blitz adds celebrity amba...
Wargaming is celebrating the season within World of Tanks Blitz with a new celebrity ambassador joining this year's Holiday Ops. In particular, British footballer and movie star Vinnie Jones will be brightening up the game with plenty of themed in-... | Read more »

Price Scanner via MacPrices.net

Apple has Certified Refurbished iPhone 12 Pro...
Apple has unlocked Certified Refurbished iPhone 12 Pro models in stock starting at $589 and ranging up to $350 off original MSRP. Apple includes a standard one-year warranty and new outer shell with... Read more
Holiday Sale: Take $50 off every 10th-generat...
Amazon has Apple’s 10th-generation iPads on sale for $50 off MSRP, starting at $399, as part of their Holiday Sale. Their discount applies to all models and all colors. With the discount, Amazon’s... Read more
The latest Mac mini Holiday sales, get one to...
Apple retailers are offering Apple’s M2 Mac minis for $100 off MSRP as part of their Holiday sales. Prices start at only $499. Here are the lowest prices available: (1): Amazon has Apple’s M2-powered... Read more
Save $300 on a 24-inch iMac with these Certif...
With the recent introduction of new M3-powered 24″ iMacs, Apple dropped prices on clearance M1 iMacs in their Certified Refurbished store. Models are available starting at $1049 and range up to $300... Read more
Apple M1-powered iPad Airs are back on Holida...
Amazon has 10.9″ M1 WiFi iPad Airs back on Holiday sale for $100 off Apple’s MSRP, with prices starting at $499. Each includes free shipping. Their prices are the lowest available among the Apple... Read more
Sunday Sale: Apple 14-inch M3 MacBook Pro on...
B&H Photo has new 14″ M3 MacBook Pros, in Space Gray, on Holiday sale for $150 off MSRP, only $1449. B&H offers free 1-2 day delivery to most US addresses: – 14″ 8-Core M3 MacBook Pro (8GB... Read more
Blue 10th-generation Apple iPad on Holiday sa...
Amazon has Apple’s 10th-generation WiFi iPad (in Blue) on Holiday sale for $349 including free shipping. Their discount applies to WiFi models only and includes a $50 instant discount + $50 clippable... Read more
All Apple Pencils are on Holiday sale for $79...
Amazon has all Apple Pencils on Holiday sale this weekend for $79, ranging up to 39% off MSRP for some models. Shipping is free: – Apple Pencil 1: $79 $20 off MSRP (20%) – Apple Pencil 2: $79 $50 off... Read more
Deal Alert! Apple Smart Folio Keyboard for iP...
Apple iPad Smart Keyboard Folio prices are on Holiday sale for only $79 at Amazon, or 50% off MSRP: – iPad Smart Folio Keyboard for iPad (7th-9th gen)/iPad Air (3rd gen): $79 $79 (50%) off MSRP This... Read more
Apple Watch Series 9 models are now on Holida...
Walmart has Apple Watch Series 9 models now on Holiday sale for $70 off MSRP on their online store. Sale prices available for online orders only, in-store prices may vary. Order online, and choose... Read more

Jobs Board

Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Senior Product Manager - *Apple* - DISH Net...
…Responsibilities** We are seeking an ambitious, data-driven thinker to assist the Apple Product Development team as our Wireless Product division continues to grow Read more
Senior Product Manager - *Apple* - DISH Net...
…Responsibilities** We are seeking an ambitious, data-driven thinker to assist the Apple Product Development team as our Wireless Product division continues to grow Read more
Senior Software Engineer - *Apple* Fundamen...
…center of Microsoft's efforts to empower our users to do more. The Apple Fundamentals team focused on defining and improving the end-to-end developer experience in Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.