Make macOS app scriptable: AppleScript working, JavaScript not

Viewed 57

I try to make my app scriptable. Therefore I created a simple .sdef file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">

<dictionary title="AppleScriptTester App">
    
    <suite name="AppleScriptTest" code="AQds" description="SDEF for Test.">
        
        <command name="testCommand" code="dosSEiao" description="TEST">
            <cocoa class="TestCommand"/>
        </command>

    </suite>
    
</dictionary>

In the Info.plist I have:

    <key>NSAppleScriptEnabled</key>
    <true/>
    <key>OSAScriptingDefinition</key>
    <string>ScriptDefinitions.sdef</string>

In Swift I added this func:

@objc(TestCommand) class TestCommand: NSScriptCommand {
    override func performDefaultImplementation() -> Any? {
        print("testCommand called")

        return nil
    }
}

So then I can call it via AppleScript:

tell application "AppleScriptTest"
    testCommand
end tell

That's working, the func is called. Now if I try it in JavaScript, it's not working anymore (I get the error -1708):

var AppleScriptTest = Application("AppleScriptTest");
AppleScriptTest.testCommand();

What am I doing wrong?

0 Answers
Related