This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
manual:Variables [2018/03/13 22:49] JMichaelTX [Using Variables in Scripts] |
manual:Variables [2018/08/05 21:56] peternlewis |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Variables ====== | ====== Variables ====== | ||
+ | |||
+ | Like most programming languages, Keyboard Maestro allows you, the Macro builder, to create Variables to store data for use later on in the same Macro, or in other Macros. So, your use of Variables can include the following: | ||
+ | |||
+ | * Set a Variable using any of these [[:Actions|Macro Actions]]: | ||
+ | * [[action:Set_Variable_to_Text|Set Variable to Text Action]] | ||
+ | * [[action:Set_Variable_to_Calculation|Set Variable to Calculation Action]] | ||
+ | * [[action:Prompt_for_User_Input|Prompt For User Input]] and other _Prompt_ Actions | ||
+ | * [[action:Search_Variable|Capture Groups from RegEx Search]] of Variable or Clipboard | ||
+ | * The [[token:CurrentClipboard|System Clipboard]] and [[token:NamedClipboard|Named Clipboards]] | ||
+ | * Other [[:Actions|Macro Actions]] | ||
+ | * Other [[:Tokens|Tokens]] | ||
+ | * Get or Set Keyboard Maestro Variables using [[:Scripting|Scripting]] | ||
+ | * Reference a Variable using the [[token:Variable|Variable Token]]: `%Variable%YourVarName%` | ||
+ | * And other means discussed below. | ||
+ | |||
+ | ===== Scope ===== | ||
+ | |||
Keyboard Maestro includes variables with three different scopes of allowed access, in order of scope, with broadest scope first: | Keyboard Maestro includes variables with three different scopes of allowed access, in order of scope, with broadest scope first: | ||
Line 6: | Line 23: | ||
| **Global**, Permanent variables | • Available Everywhere, including Scripts and Preferences. | | | **Global**, Permanent variables | • Available Everywhere, including Scripts and Preferences. | | ||
| **Password**, Permanent variables | • Available to macros but not displayed.\\ • Not directly accessible via AppleScript.\\ Displayed in password fields in Prompt For User Input actions. | | | **Password**, Permanent variables | • Available to macros but not displayed.\\ • Not directly accessible via AppleScript.\\ Displayed in password fields in Prompt For User Input actions. | | ||
- | | **Instance** Variables (v8+) | • Restricted to a specific execution sequence.\\ • Available to Macro where it was created, AND Sub-Macros in that Macro, for a given execution instance of the main macro.\\ • So these Variables are private to each execution of the same Macro, even when running simultaneously.\\ • Available to [[action:Prompt_for_User_Input|Prompt For User Input]]\\ • As of v8.0.3, is available to scripts (when used in an Execute Script Action), [[action:Custom_HTML_Prompt|HTML Prompt]] | | + | | **Instance** Variables (v8+) | • Restricted to a specific execution sequence.\\ • Available to the Macro where it was created AND Sub-Macros of that Macro, for a given execution instance of the main macro.\\ • So these Variables are private to each execution of the same Macro, even when running simultaneously.\\ • Available to [[action:Prompt_for_User_Input|Prompt For User Input]]\\ • As of v8.0.3, is available to scripts (when used in an Execute Script Action), [[action:Custom_HTML_Prompt|HTML Prompt]] | |
| **Local** Variables (v8+) | • Restricted to Macro where it was created\\ • //Not// Available to any of its Sub-Macros\\ • Available to [[action:Prompt_for_User_Input|Prompt For User Input]]\\ • As of v8.0.3, is available to scripts (when used in an Execute Script Action), [[action:Custom_HTML_Prompt|HTML Prompt]] | | | **Local** Variables (v8+) | • Restricted to Macro where it was created\\ • //Not// Available to any of its Sub-Macros\\ • Available to [[action:Prompt_for_User_Input|Prompt For User Input]]\\ • As of v8.0.3, is available to scripts (when used in an Execute Script Action), [[action:Custom_HTML_Prompt|HTML Prompt]] | | ||
| **[[manual:Dictionaries|Dictionary]]**, Permanent, global in scope. | • Available Almost Everywhere, including Scripts, but //not// Preferences.\\ • Dictionaries consist of the //Dictionary Name//, One or more pairs of //Key Name//, and //Value//\\ • Although Dictionaries are like //Variables//, they are kept in a separate category called //[[manual:Dictionaries|Dictionaries]]//. | | | **[[manual:Dictionaries|Dictionary]]**, Permanent, global in scope. | • Available Almost Everywhere, including Scripts, but //not// Preferences.\\ • Dictionaries consist of the //Dictionary Name//, One or more pairs of //Key Name//, and //Value//\\ • Although Dictionaries are like //Variables//, they are kept in a separate category called //[[manual:Dictionaries|Dictionaries]]//. | | ||
Line 168: | Line 185: | ||
Fields that expect just a variable show a small BUTTON{{{V}}} in the field while editing it, and you can use Type Completion to complete variable names in such fields. | Fields that expect just a variable show a small BUTTON{{{V}}} in the field while editing it, and you can use Type Completion to complete variable names in such fields. | ||
- | ===== Accessing in the Preferences Window ===== | + | ===== View Your Entire List of Variables ===== |
- | Variables are created on demand, but you can add, delete, see or change global variables in the [[Windows#Preferences_Variables_Pane|Variables preference pane]]. | + | You can add, delete, see or change global variables in the [[Windows#Preferences_Variables_Pane|Variables preference pane]] that have been created by your macros and scripts. There are no variable preferences to be set here. This is sometimes called the "Variables Panel" or "Variables Tab" in Keyboard Maestro Preferences. |
Local and Instance Variables are _not_ accessible from either the Preferences Window or from Scripting. | Local and Instance Variables are _not_ accessible from either the Preferences Window or from Scripting. | ||