Properties of Multiple References

When an element specifier would return a list of references, it may be possible to ask for a property of this list as a shorthand for asking for that property of each element of the list in turn.

For example, this works, and returns a list of strings, the names of each disk in turn:

tell application "Finder" to get name of every disk

Here’s another example. Recall that when you ask BBEdit for a word, you get a reference. If you just want to know the word itself—that is, its text—you ask for its contents. You can combine these operations to get a list of words and translate them into their contents:

tell application "BBEdit"
        tell text 1 of window 1
                get contents of every word whose contents contains "t"
        end tell
end tell

Again, this a tremendously powerful construct where a single Apple event causes the target application to do a lot of work for you. And again, you can’t be certain this construct will be implemented until you try it. If it isn’t, the workaround is to obtain the list of references and then cycle through it yourself, obtaining the desired property for each reference one at a time. That involves many Apple events, though, so it’s a poor substitute.

Get AppleScript: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.