User Tools

Site Tools


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
AppleScript [2017/01/06 17:54]
JMichaelTX Revised AppleScript syntax per @Tom
AppleScript [2017/06/04 22:18]
JMichaelTX [Set Variable]
Line 4: Line 4:
  
 Keyboard Maestro Version 7.1 introduced a streamlined way to Get and Set Keyboard Maestro Variables from AppleScript. Keyboard Maestro Version 7.1 introduced a streamlined way to Get and Set Keyboard Maestro Variables from AppleScript.
 +
 +In AppleScript,​ you can tell the application "​Keyboard Maestro Engine"​ to:
 +
 +    getvariable <KM Variable Name>
 +    setvariable <KM Variable Name> to <New Value>
 +
 +where both the `<KM Variable Name>` and `<New Value>` are text values.
 +
 +==== Examples ====
  
 ```applescript ```applescript
Line 16: Line 25:
   ### GET ###   ### GET ###
   -- IF KM Variable does NOT exist, the AS Variable will be set to empty string --   -- IF KM Variable does NOT exist, the AS Variable will be set to empty string --
 +
 +  -- Use Explicit Quoted Text --
 +  set myASVar to getvariable "My KM Var Name"
 +  -- OR, Use Previously Defined AppleScript Variables --
   set myASVar to getvariable myKMVar   set myASVar to getvariable myKMVar
 +  ​
 +  ​
   ​   ​
   ### SET ###   ### SET ###
   -- IF KM Variable does NOT exist, it will be created --   -- IF KM Variable does NOT exist, it will be created --
 +
 +  -- Use Explicit Quoted Text --
 +  setvariable "My KM Var Name" to "A new value"
 +  -- OR, Use Previously Defined AppleScript Variables --
   setvariable myKMVar to myASVar   setvariable myKMVar to myASVar
   ​   ​
Line 25: Line 44:
 ``` ```
  
-==== Example ====+
  
 Normally, you would not have both a GET and a SET variable within the same AppleScript tell block.\\ Normally, you would not have both a GET and a SET variable within the same AppleScript tell block.\\
Line 58: Line 77:
   * They present an alternate method.   * They present an alternate method.
  
-==== Create & Set Variable ====+==== Set Variable ==== 
 +(will be created if necessary)
  
 ```applescript ```applescript
---- Requires KM 7.0.2+ ---+my setKMVar("​MY_KM_Variable",​ "some new value"​)
  
---- Set AppleScript Variables to KM Variable Name and Value --- +on setKMVar(pKMVarNameStr,​ pValueStr) 
-set myKMVar to "​My ​KM Var Name" +   
-set myASVar ​to "My data"​ +  ​--- Compatible with Keyboard Maestro 6+ --- 
- +  ​-- ​    • Creates the KM Variable if does not exist (just like KM 7 setvariable) 
- +  ​-- ​    • Returns true if new Variable was created 
-tell application "​Keyboard Maestro Engine"​ +   
-  ​if ​variable ​myKMVar exists then +  ​set varCreatedBool ​to false 
-    --- SET KM Variable --- +   
-    set value of variable myKMVar to myASVar +  tell application "​Keyboard Maestro Engine"​ 
-  else +    try 
-    --- Create & Set KM Variable --- +      set value of variable ​pKMVarNameStr to pValueStr 
-    make new variable with properties {name:myKMVar, value:myASVar+      ​ 
-  end if +    ​on error errMsg number errNum 
-end tell+      if (errNum = -10006) then --- KM Variable ​Does NOT Exist --- 
 +         
 +        --- Create & Set KM Variable --- 
 +        make new variable with properties {name:pKMVarNameStr, value:pValueStr
 +        set varCreatedBool to true 
 +         
 +      else 
 +        error ("​Error " & errNum & ": ​ " & errMsg) 
 +      ​end if 
 +      -- END on error 
 +       
 +    end try 
 +  ​end tell 
 +   
 +  return varCreatedBool 
 +   
 +end setKMVar
 ``` ```
  
-==== Get Existing ​Variable ====+ 
 +==== Get Variable ==== 
 +(returns empty string ""​ if Variable does //not// exist)
  
 ```applescript ```applescript
---- Requires KM 7.0.2+ --- 
  
---- Set AppleScript Variables to KM Variable Name and Value --- +set myKMVar to my getKMVar("MY_KM_Variable")
-set myKMVar to "My KM Var Name"​ +
-set myASVar to "TBD" ​-- default value of KM variable, will be updated+
  
-tell application "​Keyboard Maestro Engine"​ +on getKMVar(pKMVarNameStr) 
-  if variable myKMVar exists then + 
-    --- GET Existing KM Variable ​--- +  --- Compatible with Keyboard Maestro 6+ --- 
-    set myASVar ​to value of variable ​myKMVar +  --     • Returns ""​ if variable is not found (just like KM 7 getvariable) 
-  else +   
-    --- KM Variable NOT Found --- +  tell application "​Keyboard Maestro Engine"​ 
-    set myASVar ​to ""​ +    ​try 
-    -- Optionally, throw an AppleScript ​error -- +      ​set kmVar to value of variable ​pKMVarNameStr 
-    ​error "​[ERROR] KM Variable '"​ & myKMVar & "'​ was NOT found."​ +       
-  end if +    ​on error errMsg number errNum 
-end tell+      if (errNum = -1728) then 
 +        ​--- KM Variable NOT Found --- 
 +        set kmVar to ""​ 
 +      ​else 
 +        ​error errMsg 
 +      end if 
 +      ​-- END on error 
 +      ​ 
 +    ​end try 
 +  end tell 
 +   
 +  return kmVar 
 +  ​ 
 +end getKMVar
 ``` ```
AppleScript.txt · Last modified: 2019/03/28 14:41 by JMichaelTX