Operations on Multiple References

When an element specifier would return a list of references, it may be possible to ask for an attribute of this list as a shorthand for asking for that attribute of each element of the list in turn; the request to fetch the attribute is applied distributively to each item of the list.

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

Similarly:

tell application "iTunes"
    tell view of browser window 1
        get name of every track
    end tell
end tell

Possibly you can even apply this construct to the result of a boolean test:

tell application "iTunes"
    tell view of browser window 1
        get database ID of every track whose name contains "Palestrina"
    end tell
end tell

Those examples illustrate a property; the same thing may work for an element:

tell application "Finder"
    get file 1 of every folder
end tell

When you request multiple elements distributed across a list in this way, whether you get back a list of lists or a single flattened list depends upon the individual application. For example:

tell application "Address Book"
    get every email of every person
end tell

The result of that code is a list of lists—the outer list has as many items as there are persons, with each item being a list of every email address of the corresponding person. But when you try something similar in the Finder, the result is a single list of files:

tell application "Finder" get every file of every folder end ...

Get AppleScript: The Definitive Guide, 2nd Edition 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.