User Tools

Site Tools


action:Execute_a_JavaScript_For_Automation

Execute JavaScript for Automation Action

The Execute a JavaScript For Automation action executes the specified script, either from a file or text.

Script Results

The results of the script can be:

  • Ignored.
  • Displayed in a floating window.
  • Displayed briefly in a Notification.
  • Typed in to the current selection.
  • Pasted in to the current selection.
  • Saved to a variable.
  • Saved to the system or a Named Clipboard.
  • Asynchronously ignored — the action runs while the macro continues on.

Get/Set Keyboard Maestro Variables

Example JXA Script shows how to Get/Set Keyboard Maestro Variables, and Get/Set the System Clipboard.

snippet.javascript
'use strict';
(function run() {      // this will auto-run when script is executed
 
  // --- 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");
 
 
  //--- GET A KM VARIABLE --- 
  //    Returns empty string if it doesn't exist
  var someVarNameStr = kme.getvariable("KMVarNameToGet") || 'Default Value if NOT Found';
  console.log("someVarNameStr: " + someVarNameStr)
 
  var someNewDataStr = "Text to be set to a KM var";
 
  //--- SET A KM VARIABLE ---
  //      Creates the Variable if it doesn't exist
  //      Verify Variable in the KM App Preferences
  kme.setvariable("KMVarNameToSet", { to: someNewDataStr });
 
 
  //--- GET TEXT ON CLIPBOARD ---
  var clipboardStr = app.theClipboard()
  console.log("clipboardStr: " + clipboardStr)
 
  var someDataStr = "Example text to put on clipboard"
 
  //--- COPY TO CLIPBOARD ---
  //      Verify using KM Clipboard History Viewer
  app.setTheClipboardTo(someDataStr)
 
 
}  // END of function run()
)();

Displaying User Dialogs

JavaScript For Automation scripts are executed in the background via osascript. In order to have user interaction in the script, you will need to use a reference to the “current application”. For example:

snippet.javascript
'use strict';
(function run() {      // this will auto-run when script is executed
 
// --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax ---
var app = Application.currentApplication()
app.includeStandardAdditions = true
 
var MsgStr  = "This is an example of JXA Display Dialog"
var TitleStr  = "Dialog Title"
var AnswerStr = "NONE"
 
app.beep()
var oAns = app.displayDialog(MsgStr,
            {
              withTitle:      TitleStr
              ,withIcon:      "caution"
              ,buttons:       ["Cancel","OK"]
              ,defaultButton: "OK"
              ,cancelButton:  "Cancel"
            })
 
//--- Script is stopped here if user chooses "Cancel" ---
 
var BtnStr = oAns.buttonReturned
 
return ("Btn: " + BtnStr)
 
}  // END of function run()
)();

For more information, see:

action/Execute_a_JavaScript_For_Automation.txt · Last modified: 2017/04/05 17:04 by JMichaelTX