Skip to main content

Problems the Steps editor reports

The Steps editor checks your steps as you edit them. Its messages appear in four places: under a field, as a chip on a step's row, as Steps not saved: under the list, and in place of the list when the steps can't be shown as rows.

Under a field​

A field with a problem gets a red border and the message under it, as you type. While a field holds typed text that fails its check, the steps aren't saved: Steps not saved: step N has a field that isn't valid shows under the list, and the action keeps its last saved steps until you fix the field (Steps not saved).

An empty field shows no message and doesn't block saving; the steps are saved with the field empty. When the action runs, a step with an empty number, true-or-false or window field stops the action there, and the console's System output says that argument has the wrong type. An empty Text field runs as empty text, which for some builtins (a file name, a window title to find) means the step does nothing.

MessageCauseFix
This value is required.The variable name of a Set variable step is empty.Type a name.
Enter a whole number (decimal or 0x hex), a named constant, or a $variable.A whole-number field, or a Times count, holds something else, such as 2.5 or ten.Type digits, with an optional minus sign, 0x and a hexadecimal number, or a named constant such as VirtualKey.F5 (Step parameters).
There's no named constant with this name. Check the spelling and capitals, as in VirtualKey.MediaPlayPause.A whole-number or number field, or a Times count, holds a name with a dot, such as VirtualKey.Mediaplaypause, that isn't a named constant.Correct the name. Capitals count. The names are listed under Named constants.
Enter a number, or a $variable.A number field holds something that isn't a number.Use a period as the decimal point, with no thousands separator: 1234.5.
Enter true or false, or a $variable.A True or false value of a Set variable step holds something else.Type true or false.
A step can't run a builtin inside an argument. Move it into a variable first.The field holds a builtin call with something in its parentheses, such as WindowGetTitle($w).Click Move into a variable under the field (Step parameters). If that link isn't offered, add a step for the call yourself, save its result, and use the variable.
Use letters, digits and _, not starting with a digit.A variable name, in Save result as or Variable, has another character or starts with a digit.Rename it (Variables).
This name is reserved. Choose another.The variable name is if, else, for, true or false.Choose another name.
Choose the builtin whose result is checked.A condition set to A builtin's result has no builtin yet.Click Choose a builtin… and pick one.
"…" can't be used in a key combo.The Keys box was given a key that a key combination can't name, such as a media key.Use another key, or the Press and release key step (KeyboardPressKey) (Media keys).

Move into a variable isn't offered when the call can't be read (for example when it contains operators such as +), or in the condition of a Repeat while or Repeat until.

One note is not a problem: This is stored as text, not run. To keep a builtin's result, use Save result as on that builtin's step. under a Set variable value of type Text that is a builtin call with something in its parentheses, such as WindowGetTitle($w). The value is saved as those characters. A call with empty parentheses, such as ClipboardGetText(), gets no note: it is a reading from the value menu (Variables).

On a step's row​

ChipCauseFix
Not inside a repeatAn Exit the loop step is outside every repeat, usually after a move. The action can't run while it is there.Move it back inside a repeat, or remove it (Repeating steps).

Steps not saved​

Steps not saved: followed by a reason means the editor couldn't write your rows back into the action. Until you fix it, the action keeps its last saved steps, and the rest of your edits wait.

ReasonCauseFix
a condition has no builtin chosenAn If or Repeat while/until is set to A builtin's result with no builtin.Choose the builtin, or switch Check to another kind.
a condition's value is a call (…); it needs a variable set firstA condition's Value, or one side of a comparison, holds a builtin call with arguments.Add a step above that runs the call with Save result as, and use the variable in the condition.
Builtin argument N is a call (…); it needs a variable set firstA step's field holds a builtin call with arguments. N counts the step's fields from 1.Move into a variable (Step parameters).
step N has a field that isn't validA field of step N holds typed text that fails its check (Under a field): abc in a whole-number or number field, a name that isn't a named constant, a true-or-false field with other text, a Times count that isn't valid, or a variable name that isn't allowed. An empty field never causes it. N counts the steps from 1.Fix the field the message is under.

When the steps can't be shown as a list​

Sometimes steps exist as text that the step list can't show: they were edited in the code view, imported, or written by hand in the configuration file. The list is then replaced by:

These steps use flow control that can't be shown as a list (reason). They can be edited as code in Advanced mode.

This happens in every Steps editor: an action's, a snippet's, the Sandbox's, an app group's before and after actions, and a global event's.

The steps still run as they are; the editor only can't show them as rows. In Advanced mode, the code view shows the text, and it is the only way to edit it (The code view). Once the text has a list form again, the rows come back. The text form is described in The Steps engine.

The reason is one of the following. Words in italics stand for the part of your text the reason quotes.

The text as a whole​

ReasonWhat to fix in the text
the steps aren't valid TOML: messageThe text isn't valid TOML. The message says where.
there is no [[steps]] arrayThe text has no [[steps]] tables.
the top-level key key is not a plain valueA key above the first [[steps]] holds a table or a list. Only plain values may stand there.
a step uses op op, which has no list formA step's op is one the list can't show.
a step uses the goto form of if, which has no list formAn if jumps with then_goto or else_goto, or a goto step exists. Rewrite it with an if block and end_if, or keep editing as text.
an if step has no conditionAn if step has no condition.

One step​

ReasonWhat to fix in the text
a call step has no fnA call step names no builtin.
a set step has no localA set step names no variable.
a set step's call has no fnA set step's call names no builtin.
a set step's value is not a single valueA set step's value is a list, or a table other than a reading ({ fn = "Name" }) or a named constant ({ const = "Namespace.Name" }).
a set step's value is the text text, which the list would save back as that builtin's resultA set step's value is a quoted text that reads as a reading, such as "ClipboardGetText()". To store the reading's result, write it as { fn = "ClipboardGetText" }; otherwise change the text.
a set step has neither value nor callA set step has nothing to store.
a repeat step needs exactly one of times, while or untilA repeat step has none of them, or more than one.
a repeat step's times is a number, a named constant or a builtin call stored as text, which the list would save back as a number, a constant or the builtin's resulttimes is written in quotes, such as "3", "MouseButton.Middle" or "MouseGetCursorX()". Write a number without quotes, a constant as { const = "MouseButton.Middle" }, or a reading as { fn = "MouseGetCursorX" }.
a repeat step's times is neither a whole number nor texttimes is, for example, 2.5 or true.
a condition is not a tableA condition, while or until isn't a table.
a condition needs exactly one of fn, value or compareA condition has none of them, or more than one.
a condition's not is neither true nor falsenot holds something other than true or false.
a condition's fn is emptyA condition's fn is empty text.
a condition's compare is not a supported comparisoncompare isn't one of ==, !=, <, <=, >, >=.
a comparison needs both left and rightA comparison is missing left or right.
a condition's operand is not a single valueA value, left or right is a list, or a table other than a reading or a named constant.
a condition compares the text text, which the list would save back as a number, a named constant, true/false or a builtin's resultA compared value is written in quotes but reads as a number, a named constant, true/false or a reading, such as "3", "MouseButton.Left" or "ClipboardGetText()". The list can't keep it as text. Write a reading as { fn = "ClipboardGetText" }, or change the text.
args is not an arrayA step's args isn't a list.
an argument is not a single valueAn argument is a list, or a table other than a reading ({ fn = "Name" }) or a named constant ({ const = "Namespace.Name" }).
a value names the constant text, which doesn't existA { const = "…" } holds a name that isn't a named constant, or isn't text. Correct the name; capitals count.

Blocks that don't match​

N is the step's position, counting from 1.

ReasonWhat to fix in the text
step N is an else outside an if blockAn else with no open if before it.
step N is a second else in one if blockAn if block has two else steps.
step N closes a block that isn't openAn end_if or end_repeat with no matching open block.
step N opens a block that is never closedAn if or repeat with no end_if or end_repeat.

Notices around the editor​

NoticeMeaning
Nothing is set up in this mode, so running it does nothing. The mode content is kept but doesn't run.Written as is set to an empty mode while another mode has content. Click Use mode to switch back (Steps, Script and AutoHotkey).
AutoHotkey support is turned off in General settings, so this action does nothing until it is enabled.The action runs as AutoHotkey, which is off (AutoHotkey).
No registered plugin provides the "engine" engine, so this script is skipped when it runs. Add the plugin on the Plugins page, or choose another mode.The action runs on a plugin's engine, and that plugin isn't registered (Plugins).