action:Execute_a_JavaScript_For_Automation
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| action:Execute_a_JavaScript_For_Automation [2017/11/17 01:13] – [Get/Set Local & Instance Variables] JMichaelTX | action:Execute_a_JavaScript_For_Automation [2025/08/18 02:17] (current) – [Local & Instance Variables] peternlewis | ||
|---|---|---|---|
| Line 16: | Line 16: | ||
| *Asynchronously ignored — the action runs while the macro continues on. | *Asynchronously ignored — the action runs while the macro continues on. | ||
| + | By default, errors are not included in the output, and the output is trimmed of white space. These can be adjusted in the action (gear) ⚙ menu. | ||
| - | ===== Get/Set Keyboard Maestro Variables | + | ===== Modern Syntax |
| - | ==== Global Variables ==== | + | In version 11.0, scripts default to Modern Syntax, which essentially wraps the script in: |
| - | + | ```javascript | |
| - | ** Example JXA Script shows how to Get/Set Keyboard Maestro //Global// Variables, and Get/ | + | (function () { |
| + | … | ||
| + | })() | ||
| + | ``` | ||
| + | |||
| + | This helps keep your script from interacting with the web page in unexpected ways. A result of this is that you need to return values to the action using the `return` syntax. So a trivial action would be: | ||
| ```javascript | ```javascript | ||
| - | 'use strict' | + | return " |
| - | (function run() { // this will auto-run when script is executed | + | ``` |
| - | // --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax --- | + | You can turn Modern Syntax on or off in the popup menu next to the script. |
| - | var app = Application.currentApplication() | + | |
| - | app.includeStandardAdditions = true | + | |
| - | // --- SET KME APP VARIABLE NEEDED TO GET/SET KM VARIABLES --- | + | {{: |
| - | var kme = Application("Keyboard Maestro Engine"); | + | ===== Using Keyboard Maestro Variables ===== |
| + | |||
| + | In Modern Syntax | ||
| + | |||
| + | ```javascript | ||
| + | var v = kmvar.My_KM_Data | ||
| + | ``` | ||
| + | |||
| + | Alternatively, | ||
| + | |||
| + | When accessing a variable, if its name has a space in it, replace it with an underscore. | ||
| + | |||
| + | Local and Instance variables are available, but Password variables are not. | ||
| + | |||
| + | 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. | ||
| + | |||
| + | ==== Using JXA to Access Variables ==== | ||
| + | |||
| + | You can use JXA’s ability to communicate with the Keyboard Maestro Engine | ||
| + | |||
| + | ```javascript | ||
| + | // Assumes Modern Syntax | ||
| | | ||
| + | // --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax --- | ||
| + | var app = Application.currentApplication() | ||
| + | app.includeStandardAdditions = true | ||
| - | | + | // --- SET KME APP VARIABLE NEEDED TO GET/SET KM VARIABLES |
| - | // | + | var kme = Application("Keyboard Maestro Engine"); |
| - | | + | |
| - | console.log(" | + | |
| | | ||
| - | | + | |
| + | //--- GET A KM VARIABLE --- | ||
| + | // Returns empty string if it doesn' | ||
| + | var someVarNameStr | ||
| + | console.log(" | ||
| | | ||
| - | | + | var someNewDataStr = "Text to be set to a KM var"; |
| - | // Creates the Variable if it doesn' | + | |
| - | // Verify Variable in the KM App Preferences | + | //--- SET A KM VARIABLE --- |
| - | kme.setvariable(" | + | // Creates the Variable if it doesn' |
| + | // Verify Variable in the KM App Preferences | ||
| + | kme.setvariable(" | ||
| | | ||
| - | | + | //--- GET TEXT ON CLIPBOARD --- |
| - | var clipboardStr = app.theClipboard() | + | var clipboardStr = app.theClipboard() |
| - | console.log(" | + | console.log(" |
| - | + | ||
| - | var someDataStr = " | + | |
| - | + | ||
| - | //--- COPY TO CLIPBOARD --- | + | |
| - | // Verify using KM Clipboard History Viewer | + | |
| - | app.setTheClipboardTo(someDataStr) | + | |
| - | } // END of function run() | + | var someDataStr = " |
| - | )(); | + | |
| + | //--- COPY TO CLIPBOARD --- | ||
| + | // Verify using KM Clipboard History Viewer | ||
| + | app.setTheClipboardTo(someDataStr) | ||
| ``` | ``` | ||
| - | --- | ||
| ==== Local & Instance Variables ==== | ==== Local & Instance Variables ==== | ||
| - | **How To Get/Set Keyboard Maestro Local & Instance Variables** | ||
| - | Keyboard Maestro | + | Keyboard Maestro |
| ```javascript | ```javascript | ||
| Line 82: | Line 107: | ||
| ``` | ``` | ||
| - | --- | + | Note that this method is only useful if you are not using Modern Syntax (since you can access the local variables directly through the `kmvar` hash), and you need the instance information by some means (passed as an environment variable in the case of the `Execute a JavaScript For Automation` action, but in other cases external to the Keyboard Maestro Engine you would need some other method of getting it). |
| ===== Displaying User Dialogs ===== | ===== Displaying User Dialogs ===== | ||
| Line 89: | Line 115: | ||
| ```javascript | ```javascript | ||
| - | 'use strict'; | ||
| - | (function run() { // this will auto-run when script is executed | ||
| - | |||
| // --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax --- | // --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax --- | ||
| var app = Application.currentApplication() | var app = Application.currentApplication() | ||
| Line 115: | Line 138: | ||
| return ("Btn: " + BtnStr) | return ("Btn: " + BtnStr) | ||
| - | |||
| - | } // END of function run() | ||
| - | )(); | ||
| ``` | ``` | ||
| + | ===== See Also ===== | ||
| - | **For more information, | ||
| * [[:: | * [[:: | ||
| * [Forum Topics tagged with " | * [Forum Topics tagged with " | ||
| * [Learning & Using AppleScript & JavaScript for Automation (JXA)](http:// | * [Learning & Using AppleScript & JavaScript for Automation (JXA)](http:// | ||
action/Execute_a_JavaScript_For_Automation.1510881202.txt.gz · Last modified: by JMichaelTX
