AppleScript dialog lists - how to display a list in a dialog

AppleScript dialog list FAQ: How can I display a list in an AppleScript dialog?

I couldn't find an example showing how to display a list of strings in an AppleScript dialog, so I created the following simple example. First I create a list (in this case a short list of voices on Mac OS/X that can be used with the say command), and then I display the list in a dialog the user can use to select one of the items in the list.

-- a sample AppleScript program to prompt a user to select an item from a list

-- display a dialog to prompt the user to select a voice from a list of voices
set myVoices to {"Agnes", "Kathy", "Princess", "Vicki", "Victoria"}

-- get the voice the user selected from the list
set selectedVoice to {choose from list myVoices}

-- say "Hello world" using the voice the user selected
say "Hello world" using selectedVoice

AppleScript dialog list - Sample image

Here's what this AppleScript list dialog looks like:

An AppleScript dialog displaying a list.

At the moment I'm new to AppleScript, but I personally don't like using syntax like this:

display dialog "What should I say?" default answer ""

to display a dialog prompting a user to enter some text, and significantly different syntax like this:

choose from list myVoices

to display a dialog prompting the user to select an item from a list. I know that the intent is to make the language very human-readable, but I'd prefer more consistency here.

In a related note, if you want to make your AppleScript dialog list look better, here's a link to my Customize your AppleScript dialog tutorial.

In a related note, here's a link to my semi-famous Mac text to speech using AppleScript tutorial. It's similar to this tutorial, but reads several different Mac OS X voices one after the other, so you can get an idea of what all the voices sound like.

Add new comment

Anonymous format

  • Allowed HTML tags: <em> <strong> <cite> <code> <ul type> <ol start type> <li> <pre>
  • Lines and paragraphs break automatically.