如果希望在您的 python 代码中执行“自动化的 Javascript”(applescript 的继任者),请执行以下操作:
script = None
def compileScript():
from OSAKit import OSAScript, OSALanguage
scriptPath = "path/to/file.jxa"
scriptContents = open(scriptPath, mode="r").read()
javascriptLanguage = OSALanguage.languageForName_("JavaScript")
script = OSAScript.alloc().initWithSource_language_(scriptContents, javascriptLanguage)
(success, err) = script.compileAndReturnError_(None)
# should only occur if jxa is incorrectly written
if not success:
raise Exception("error compiling jxa script")
return script
def execute():
# use a global variable to cache the compiled script for performance
global script
if not script:
script = compileScript()
(result, err) = script.executeAndReturnError_(None)
if err:
# example error structure:
# {
# NSLocalizedDescription = "Error: Error: Can't get object.";
# NSLocalizedFailureReason = "Error: Error: Can't get object.";
# OSAScriptErrorBriefMessageKey = "Error: Error: Can't get object.";
# OSAScriptErrorMessageKey = "Error: Error: Can't get object.";
# OSAScriptErrorNumberKey = "-1728";
# OSAScriptErrorRangeKey = "NSRange: {0, 0}";
# }
raise Exception("jxa error: {}".format(err["NSLocalizedDescription"]))
# assumes your jxa script returns JSON
return json.loads(result.stringValue())