Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

invoking one script from another

edited February 2007 in FastScripts

I am a new user of FastScripts and am very impressed by the enhanced execution speed of scripts invoked by FastScripts.

As a novice user, I'm stumped by a simple problem. Let's say I have two compiled scripts, "ScriptA.scpt" and "ScriptB.scpt", in the same script library "MainLibrary". I want "ScriptA" to invoke/run "ScriptB" via FastScripts in order to retain the execution speed benefit of FastScripts. I tried the following code within "ScriptA", but when I run "ScriptA" from FastScripts, "ScriptB" is not invoked, and an alert is sounded:

tell application "FastScripts" to tell top level script library "/Library/Scripts" to tell script library "MainLibrary" to invoke script item "ScriptB"

I found that if I save "ScriptA" as an applet ("") and run the "ScriptA" applet via FastScripts, then it does invoke "ScriptB". But I would prefer that "ScriptA" be a compiled script rather than an applet. Is there some way to get a compiled script to invoke another compiled script via FastScripts?

Thank you in advance for your help.



  • Hi bmose - hmm - that's a good question, and something I'll have to look into. I haven't used the "invoke script" functionality much myself, so maybe you've discovered a subtle bug. I will update this topic when I have more information.

    Thanks for reporting this!

  • Thank you for the prompt response.

    May I ask if there an alternative way to run one compiled script from another compiled script (other than using "invoke script", the "run script" scripting addition, or a "System Events" key stroke technique)? Ie, can one script directly run another compiled script while remaining in the FastScripts environment?

  • I don't know of any other way to invoke another script, aside from the methods you mentioned.

  • I'll tailor my scripts to adjust for that (while retaining the speed benefits of FastScripts). Thanks again for the info.

  • bmose, this might be a solution to what you were asking. I have started using a library of sorts, to reuse code for Adobe InDesign scripts. Here's how it's implemented:

    set yourlib to loadLib(\"yourLib.scpt\")

    set returnValue to yourLibraryFunction(args, whatever) of yourlib

    on loadLib(which)
    set libPath to (path to scripts folder as string) & \"lib:\"
    return load script (a reference to file (libPath & which))
    end loadLib

    You can call functions in a compiled script (as opposed to an applet), and it's portable in that it doesn't rely on Fastscripts. This page has some more info:

    Hope this helps! Ian
  • Ian,

    As I read your post, I had one of those "Of course, why didn't I think of that?" moments! Just load any needed compiled scripts into the main script to create a complete script. It's exactly what I was looking for. Thank you so much for the excellent information.

Sign In or Register to comment.