Reputation: 39
I am trying to run applescript code in swift to get information from other applications. Here is a sample code:
var applescript = "tell application "Xcode" \n set fileName to name of window 1 \n end tell"
var error: NSDictionary?
let scriptObject = NSAppleScript(source: applescript)
let output: NSAppleEventDescriptor = scriptObject!.executeAndReturnError(&error)
if (error != nil) {
print("error: \(String(describing: error))")
}
if output.stringValue == nil{
let empty = "the result is empty"
return empty
}
else {
return (output.stringValue?.description)!
}
But it always return me error messages like this:
error: Optional({
NSAppleScriptErrorBriefMessage = "Expected end of line but found unknown token.";
NSAppleScriptErrorMessage = "Expected end of line but found unknown token.";
NSAppleScriptErrorNumber = "-2741";
NSAppleScriptErrorRange = "NSRange: {25, 1}";
})
I think the unknown token it mentioned is "\n". Because when I ran other applescripts without "\n" in codes, there was no error message.
Can somebody help me this out? Thank you so much!
Upvotes: 0
Views: 565
Reputation: 285082
You have to escape the inner double quotes
let applescript = "tell application \"Xcode\" \n set fileName to name of window 1 \n end tell"
Or, more convenient and more legible with the multiline syntax
let applescript = """
tell application "Xcode"
set fileName to name of window 1
end tell
"""
Upvotes: 2