Keyboard Maestro Version 7.1 introduced a streamlined way to Get and Set Keyboard Maestro Variables from AppleScript.
### Requires Keyboard Maestro 7.1+ ### --- Set AppleScript Variables to KM Variable Name and Value --- set myKMVar to "My KM Var Name" set myASVar to "TBD" -- default value of KM variable, will be updated tell application "Keyboard Maestro Engine" ### GET ### -- IF KM Variable does NOT exist, the AS Variable will be set to empty string -- set myASVar to getvariable myKMVar ### SET ### -- IF KM Variable does NOT exist, it will be created -- setvariable myKMVar to myASVar end tell
Normally, you would not have both a GET and a SET variable within the same AppleScript tell block.
Here's a real-world example, but with the error checking removed to simplify.
--- GET REQUIRED KM VARIABLES --- tell application "Keyboard Maestro Engine" set mainStr to getvariable "SCPT__MainString" set subStr to getvariable "SCPT__StringToFind" end tell --- PROCESS THESE KM VARIABLES --- --- Get Start of StringToFind --- set posSubStr to offset of subStr in mainStr --- SET OUTPUT KM VARIABLE --- tell application "Keyboard Maestro Engine" to setvariable "SCPT__PosSubStr" to posSubStr
For more details, see Scripting article in the Manual Section.
--- Requires KM 7.0.2+ --- --- Set AppleScript Variables to KM Variable Name and Value --- set myKMVar to "My KM Var Name" set myASVar to "My data" tell application "Keyboard Maestro Engine" if variable myKMVar exists then --- SET KM Variable --- set value of variable myKMVar to myASVar else --- Create & Set KM Variable --- make new variable with properties {name:myKMVar, value:myASVar} end if end tell
--- Requires KM 7.0.2+ --- --- Set AppleScript Variables to KM Variable Name and Value --- set myKMVar to "My KM Var Name" set myASVar to "TBD" -- default value of KM variable, will be updated tell application "Keyboard Maestro Engine" if variable myKMVar exists then --- GET Existing KM Variable --- set myASVar to value of variable myKMVar else --- KM Variable NOT Found --- set myASVar to "" -- Optionally, throw an AppleScript error -- error "[ERROR] KM Variable '" & myKMVar & "' was NOT found." end if end tell