User Tools

Site Tools


action:Execute_an_AppleScript

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
action:Execute_an_AppleScript [2018/07/03 03:23]
peternlewis
action:Execute_an_AppleScript [2023/09/12 23:04] (current)
peternlewis [Using Keyboard Maestro Variables]
Line 1: Line 1:
-{{:​scripting-icon.png?​nolink|}} 
 ====== Execute AppleScript Action ====== ====== Execute AppleScript Action ======
  
Line 12: Line 11:
 **There are two setup options:** **There are two setup options:**
 ^ Setup Option ^ Choices\\ (Default shown first) ^ ^ Setup Option ^ Choices\\ (Default shown first) ^
-| Script location | Execute text script (type or paste script into Action text field)\\ Execute script file (This is faster if it is a compiled script file `.scpt`) |+| Script location | Execute text script (type or paste script into Action text field)\\ Execute script file (This may be faster if it is a compiled script file `.scpt`) |
 | Script Results | Ignored.\\ Displayed in a floating window.\\ Displayed briefly in a Notification.\\ Typed in the current text field that has focus.\\ Pasted in text field that has focus.\\ Saved to a Keyboard Maestro Variable.\\ Saved to the System or Named Clipboard.\\ Ignore Results and run //​Asynchronously//​ (the script runs while the macro immediately continues on to the next //​Action//​.) | | Script Results | Ignored.\\ Displayed in a floating window.\\ Displayed briefly in a Notification.\\ Typed in the current text field that has focus.\\ Pasted in text field that has focus.\\ Saved to a Keyboard Maestro Variable.\\ Saved to the System or Named Clipboard.\\ Ignore Results and run //​Asynchronously//​ (the script runs while the macro immediately continues on to the next //​Action//​.) |
  
Line 25: Line 24:
 {{:​action:​execute-applescript-example-km8.png?​nolink|}} {{:​action:​execute-applescript-example-km8.png?​nolink|}}
  
----+When editing the script, you can press <​key>​Enter</​key>​ to compile and format the script, and you can press <​key>​Option-Return</​key>​ (v11.0+) to insert a line break (“¬”) character. 
 + 
 +If the script fails, the action will fail (v9.0+), potentially aborting the macro.
  
 ===== Scripting ===== ===== Scripting =====
  
-For the latest update on this topic, see the User Manual article: [[manual:​Scripting|Scripting]]. ​ +For the latest update on this topic, see the User Manual article: [[manual:​Scripting|Scripting]]. ​
 This provides the latest method to get and set Keyboard Maestro variables via AppleScript. This provides the latest method to get and set Keyboard Maestro variables via AppleScript.
  
  
-AppleScripts are executed in the background via osascript. This means they are not allowed to do user interaction. You can work around this by asking the current ​applicationto ​do the user interaction for you, for example:+AppleScripts are executed in the background via osascript. This means they are not allowed to do user interaction. You can work around this by asking the current ​application to do the user interaction for you, for example:
  
 ```applescript ```applescript
Line 45: Line 46:
  
 ``` ```
- 
---- 
  
 ===== Using Keyboard Maestro Variables ===== ===== Using Keyboard Maestro Variables =====
  
 :!: **See [[:​AppleScript|Using AppleScript to Get and Set Keyboard Maestro Variables]] for best methods.** :!: **See [[:​AppleScript|Using AppleScript to Get and Set Keyboard Maestro Variables]] for best methods.**
 +
 +Keyboard Maestro sets the environment variables for the script to include all your variables, using a prefix of `KMVAR_` and your variable name with spaces changed in to underscores (‗). For example, your Keyboard Maestro “File Name” variable will be available as the environment variable `KMVAR_File_Name`.
 +
 +By default, all variables are included, but you can select No Variables, or specific variables as desired using the popup menu next to the script (v11.0+).
  
 In AppleScript with Keyboard Maestro Version 7.1+, you can tell the application "​Keyboard Maestro Engine"​ to: In AppleScript with Keyboard Maestro Version 7.1+, you can tell the application "​Keyboard Maestro Engine"​ to:
Line 63: Line 66:
 tell application "​Keyboard Maestro Engine"​ to set myVar to getvariable "My KM Variable"​ tell application "​Keyboard Maestro Engine"​ to set myVar to getvariable "My KM Variable"​
 </​code>​ </​code>​
---- 
  
 **Using Keyboard Maestro Variables in a Shell Script from AppleScript** **Using Keyboard Maestro Variables in a Shell Script from AppleScript**
Line 72: Line 74:
 set myVar to do shell script "echo $KMVAR_My_KM_Variable"​ set myVar to do shell script "echo $KMVAR_My_KM_Variable"​
 </​code>​ </​code>​
 +
 +===== Error Handling =====
 +
 +If the Applescript contains errors, a system notification will be displayed when the action is run (unless you have disabled them in System Preferences).
 +
 +If a Notifications is displayed, it can happen the error message gets cut off.
 +
 +To see the entire message, view the Keyboard Maestro Engine Log, which can be found using the Keyboard Maestro.app Editor menu _Help > Open Logs Folder_, or just open this file:
 +`~/​Library/​Logs/​Keyboard Maestro/​Engine.log` and searching for "​AppleScript"​.
 +
 +You should find a log entry like this:\\
 +  2021-07-21 16:43:53 Execute an AppleScript failed with script error:
 +  [path to file]/TEST Handle Script Error in KM.scpt: ​
 +  execution error: [ERROR]: ​ Can’t divide 5.0 by zero.
 +  ​
 +Unfortunately the Keyboard Maestro Engine log file is very verbose, and it can be very hard to find the actual error. ​ So, you may find this custom macro useful:\\
 +[MACRO: ​  ​Display Last KM Macro Error Ver 4 [Pub]](https://​forum.keyboardmaestro.com/​t/​display-last-km-macro-error/​5340).
 +
 +Also, if you are writing a lot of AppleScripts,​ then you will find it very beneficial to always include a custom error handler in your script, and then use a custom Action after the _Execute AppleScript_ Action to check for an error and provide much better reporting.\\
 +Here is an example of such an Action/​Macro to handle errors: ​ [[KM] Script Error Handler [Sub-Macro] ](https://​forum.keyboardmaestro.com/​t/​km-script-error-handler-sub-macro/​4641).
 +
 +===== See Also =====
 +
 +=== Actions ===
 +
 +* [[action:​Execute_a_Shell_Script|Execute a Shell Script]]
 +* [[action:​Execute an Automator Workflow|Execute an Automator Workflow]]
 +* [[action:​Execute a JavaScript For Automation|Execute a JavaScript For Automation]]
 +* [[action:​Filter|Filter Variable with Expand Tilde In Path]]
 +* [[:​Actions|See all Actions]]
 +
 +
  
action/Execute_an_AppleScript.1530602603.txt.gz · Last modified: 2018/07/03 03:23 by peternlewis