Me

The keyword me represents the current script—the script or script object that is running the code where the keyword me appears. Thus:

script myScript
        me -- «script myScript»
end script
run myScript
me -- «script»
               , the anonymous top-level script
parent of me -- «script AppleScript»

See also Section 9.7.3. In situations where you would say of me after a word, you may say my before that word instead.

We saw the keyword me used earlier (Section 9.7) as a way to force AppleScript to attempt to interpret a term as belonging to the current script object, so that it will use the inheritance chain.

The keyword me can be useful in a tell block, to specify the current script as the target instead of the tell block’s target. For example, this doesn’t work:

on reverseString(s)
        set the text item delimiters to ""
        return (reverse of characters of s) as string
end reverseString
tell application "Finder"
        set name of folder 1 to reverseString(get name of folder 1) -- error
end tell

The problem is that when we come to the handler call reverseString( ) in the next-to-last line, the target is the Finder. So AppleScript passes it along to the Finder, which doesn’t know what to do with it. The target for reverseString needs to be me, even though the target of everything else in that line should be the Finder. This is just the kind of situation where me comes in handy:

        set name of folder 1 to my reverseString(get name of folder 1)

But me won’t also resolve a terminology clash between a name defined by ...

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.