AppleScript – Calling a MacScript Lib function from within a ‘tell block’ to another app

When calling a function in the MacScript.com Library from within a tell block targetting another Application you need to use “tell me”

For example I’m telling Adobe Indesign to collect the names of the pages in a document where there’s a text overflow, but I want to collect all that info into a usable list without duplicates so I use the MacScript.com Library function GetUniqueListItems. The function needs to be called from within a ‘tell block’ targetting the application Adobe InDesign CS4 to do stuff. If you don’t use tell me when referencing the MacScript Library function(s) then the AppleScript will bomb because it is still telling/talking to InDesign which doesn’t have this function in its own dictionary.

[sourcecode language=”plain”]

–This line will load the Macscript.com Library at compile time. (The Library will be embedded when you export your script.)
property parent : load script alias (((path to scripting additions from local domain) as text) & "Macscript.com Library")

(*
uses GetUniqueItems() function from MacScript.com library
calling a library routine from within an application tell Block.
The secret is explicitly to "tell me"
*)

global thePageNames
set thePageNames to {}

tell application "Adobe InDesign CS4"
activate
try
set myDoc to active document
tell active document
set thePageNames to (name of parent of every text frame whose overflows = true)
–set thePageNames to {"168", "168", "168", "170"}

tell me
activate
set theResult to GetUniqueListItems(thePageNames)
set newResult to TextListToString(theResult, ", ")
display dialog "" & newResult as string
end tell
end tell
on error
display dialog "no document open"
end try
end tell

[/sourcecode]