使Macos应用程序脚本可:AppleScript工作,JavaScript不

发布于 2025-02-03 08:32:38 字数 1441 浏览 3 评论 0原文

我试图使我的应用程序可构图。 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?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文