Run AppleScript from Cocoa Application

Is it possible to run an AppleScript code inside an Cocoa Application?

I've tried NSAppleScript class, but no success.

Also, does Apple allow this?


Solution 1:

Solved!

Xcode wasn't saving my script file into app's resources path. To run an AppleScript code from Cocoa Application, use this:

NSString* path = [[NSBundle mainBundle] pathForResource:@"ScriptName" ofType:@"scpt"];
NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary];
NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors];
[appleScript executeAndReturnError:nil];
[appleScript release];

Solution 2:

You mentioned xcode wasn't saving the script to your app's resources path. That is correct. You have to tell xcode to do this. First add the compiled script to your project. Then open your target and find the "Copy Bundle Resources" action. Drag your script from the files list into that action. This way your script is copied to your app's resources automatically so you don't have to do it by hand.

Whenever I use a compiled AppleScript in a cocoa application I, 1) add the script to the project, 2) create a new class to control the AppleScript, 3) use the below init method for the class, and 4) drag the script to the "Copy Bundle Resources" action of the target.

- (id)init {
    NSURL *scriptURL = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"applescripts" ofType:@"scpt"]];
    if ([self initWithURLToCompiledScript:scriptURL] != nil) { //attempt to load the script file
    }

    return self;
}