Tell

A tell block , like an if block, comes in two forms: a genuine block and a single-line version. The block form is like this:

tell target
        -- code
end tell

The single-line version is like this:

tell target to command

A tell block performs two distinct functions:

  • It determines (at runtime) the target of the commands in its code.

  • It dictates (at compile time) the source that will be used for the resolution of the terminology that appears in its code.

The fact that tell does both these things makes a certain sense. After all, if you’re going to be sending messages to the Finder, you’re probably going to want to talk to the Finder in the Finder’s own language. Nevertheless, the two functions are distinct, and it is possible to do either one without the other:

  • To target an application without using its vocabulary, address it entirely by means of of , without using tell:

    get frontmost of application "Finder"

    That example compiles because the term frontmost is defined by AppleScript itself; it runs because the Finder adopts the same term.

  • To use an application’s vocabulary without targeting it, supply a terms block:

    using terms from application "Finder"
            tell me to get folder 1
    end using terms from

    That example compiles, but at runtime there’s an error because our script doesn’t understand the Finder’s term folder.

On the determination of the target, see Section 10.2. On the resolution of vocabulary, see Chapter 19.

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.