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
Next revision Both sides next revision
action:Execute_an_AppleScript [2018/07/03 03:23]
peternlewis
action:Execute_an_AppleScript [2021/07/21 17:58]
JMichaelTX ADD section on error handling
Line 1: Line 1:
-{{:​scripting-icon.png?​nolink|}} 
 ====== Execute AppleScript Action ====== ====== Execute AppleScript Action ======
  
Line 25: Line 24:
 {{:​action:​execute-applescript-example-km8.png?​nolink|}} {{:​action:​execute-applescript-example-km8.png?​nolink|}}
  
----+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 44:
  
 ``` ```
- 
---- 
  
 ===== Using Keyboard Maestro Variables ===== ===== Using Keyboard Maestro Variables =====
Line 63: Line 60:
 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 68:
 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).
 +
 +  ​
 +  ​
  
action/Execute_an_AppleScript.txt · Last modified: 2023/09/12 23:04 by peternlewis