Variables actions
To manually create a variable in a desktop flow, deploy the Set variable action. This action requires you to provide a name and a value for the new variable.
Important
Reserved keywords can't be used as variable names. For the full list of reserved keywords go to Reserved keywords in desktop flows.
To increase or decrease the value of a numeric variable, use the Increase variable and Decrease variable actions, respectively.
Most actions output their result into a variable. For example, the Create new list action produces an empty list.
Similarly, the Generate random number action produces a random numeric value. If you enable Generate multiple numbers in this action, you create a list variable containing multiple random numeric values.
To add items to an existing list, deploy the Add item to list action, and populate a hard-coded value or a variable to define the item to add. Likewise, you can remove items from a list with the Remove item from list action.
Note
List indexes start from 0, meaning that the first item in the list always has an index of 0. Use the notation %ListName[0]% to refer to the first item in the list, %ListName[1]% to the second, and so on.
If you want to create a data table variable, deploy the Create new data table action and specify the initial items of it using the visual builder.
To manipulate a data table variable, use the actions of the respective action subgroup, such as the Find or replace in data table and Update data table item actions.
Creates a new data table variable.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
New table | No | Datatable | The input data table |
Argument | Type | Description |
---|---|---|
DataTable | Datatable | The new data table |
This action doesn't include any exceptions.
Inserts a row at the end or before a specific index value.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must have been previously specified by an action that produces a data table variable | |
Into location | N/A | End of data table, Before row index | End of data table | Specify whether to insert the new row at the end of the data table or before a specified row index |
Row index | No | Numeric value | Insert the row index value to be used when before row index is specified as the into location parameter | |
New value(s) | No | List, Datarow | This parameter accepts a list or datarow variable where the column count should match the column count in the data table |
This action doesn't produce any variables.
Exception | Description |
---|---|
Item index is out of range | Indicates that the provided item index is out of range |
Invalid input arguments | Indicates that there's an invalid input parameter |
Incompatible type error | Indicates that an input parameter of an incompatible type is provided |
Delete a data table row at the corresponding row index.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must be specified by an action that produces a data table variable | |
Row index | No | Numeric value | The row index within a data table that should be deleted |
This action doesn't produce any variables.
Exception | Description |
---|---|
Item index is out of range | Indicates that the specified data table item is out of range |
Update a data table row item on a defined column.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must have been previously specified by an action that produces a data table variable. | |
Column | No | Text value | The column name or index of the item to update. | |
Row | No | Numeric value | The row index of the item to update. | |
New value | No | Text value | The new value to update at the specified row index and column. |
This action doesn't produce any variables.
Exception | Description |
---|---|
Item index is out of range | Indicates that the specified data table item is out of range |
Column name doesn't exist | Indicates that the provided column name doesn't exist |
Column index is out of range | Indicates that the provided column index is out of range |
Incompatible type error | Indicates that an input parameter of an incompatible type was provided |
Finds and/or replaces data table values.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must have been previously specified by an action that produces a data table variable | |
Search mode | N/A | Find, Find and replace | Find | The mode to search with (find or find and replace) |
All matches | N/A | Boolean value | True | Specify whether to find or replace text in all the matching cells found or the first matching cell only |
Text to find | No | Text value | The text to find in the data table | |
Find using a regular expression | N/A | Boolean value | False | Specify whether to use a regular expression to match the cell contents with the text to find |
Match case | N/A | Boolean value | False | Specify whether to search for case-sensitive data |
Match entire cell contents | N/A | Boolean value | False | Specify whether to search for cells that contain just the specified text |
Text to replace with | No | Text value | The text used to replace the matching cells | |
Search by | N/A | Everywhere, On column | Everywhere | The order in which to search for the text (everywhere, or on column) |
Column index or name | No | Text value | The column header or index value |
Argument | Type | Description |
---|---|---|
DataTableMatches | Datatable | The data table containing the row and column indexes for matches |
Exception | Description |
---|---|
Provided regular expression is invalid | Indicates that the provided regular expression is invalid |
Column name doesn't exist | Indicates that the provided column name doesn't exist |
Column index is out of range | Indicates that the provided column index is out of range |
Incompatible type error | Indicates that an input parameter of an incompatible type is provided |
Inserts a column at the end or before a specific index value.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must be specified by an action that produces a data table variable. | |
Into location | N/A | End of data table, Before column index | End of data table | Specify whether to insert the new column at the end of the data table or before a specified column index. |
Column name | No | Text value | Specify the header of the new column. | |
Column index | No | Numeric value | Specify the column index value that is utilized when the Before column index option is selected for the Into location parameter. |
This action doesn't produce any variables.
Exception | Description |
---|---|
Column index is out of range | Indicates that the provided column index is out of range. |
Duplicate column name | Indicates that the provided column name already exists. |
Delete a data table column at the specified column index or column name.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must be specified by an action that produces a data table variable. | |
Specify column with | N/A | Name, Index | Name | Specify whether to find the column by name or index. |
Column name | No | Text value | The name of the column that should be deleted. | |
Column index | No | Numeric value | The index of the column that should be deleted. Column indexes start from 0. |
This action doesn't produce any variables.
Exception | Description |
---|---|
Column name doesn't exist | Indicates that the provided column name doesn't exist |
Column index is out of range | Indicates that the provided column index is out of range |
Deletes the rows of the data table that have all of their cells empty.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. This variable must have been previously specified by an action that produces a data table variable |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Deletes all the rows that are duplicate from the data table, if the values have the same data type in each column.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. The specified variable must be defined through an action that generates a data table variable. |
This action doesn't produce any variables.
Exception | Description |
---|---|
Type mismatch in the cells of a column | Indicates that two or more values in a single column are of different data type |
Deletes all the rows of the data table, keeping table headers unaffected.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. The specified variable must be defined through an action that generates a data table variable. |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Sorts the data table rows in ascending or descending order by the specified column, if all its values have the same data type.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. The specified variable must be defined through an action that generates a data table variable. | |
Specify column with | N/A | Name, Index | Name | Specify whether to find the column by name or index. |
Column name | No | Text value | The name of the column that should be sorted. | |
Column index | No | Numeric value | The index of the column that should be sorted. Column indexes start from 0. | |
Order | N/A | Ascending, Descending | Ascending | The order to sort the data table. |
This action doesn't produce any variables.
Exception | Description |
---|---|
Column name doesn't exist | Indicates that the provided column name doesn't exist |
Column index is out of range | Indicates that the provided column index is out of range |
Type mismatch in the cells of a column | Indicates that two or more values in a single column are of different data type |
Filters the data table rows based on the applied rules.
In the action's built-in wizard that helps you create the filters needed, you can apply multiple filters to different columns that are defined by name or index. Every filter is composed of a specific column it targets, an operator that is selected, and the value that is assigned to it.
In addition, multiple filters are applied together via AND and/or OR rules. AND rules are resolved first in the resulting filter expression, followed by the OR rules.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. The specified variable must be defined through an action that generates a data table variable. | |
Filters to apply | No | Filtering rules as defined by the user | N/A | Filtering rules applied to the defined columns |
Argument | Type | Description |
---|---|---|
FilteredDataTable | Datatable | The generated data table after applying the filters |
Exception | Description |
---|---|
Column name doesn't exist | Indicates that the provided column name doesn't exist |
Column index is out of range | Indicates that the provided column index is out of range |
Type mismatch in the cells of a column | Indicates that two or more values in a single column are of different data type |
Merges two data tables together, specifying the merging behavior in case their number of columns is different.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
First data table | No | Datatable | The first data table variable to work with. This is also the action's produced variable that holds the merged data table | |
Second data table | No | Datatable | The second data table that is merged into the first data table | |
Merge mode | N/A | Add extra columns, Ignore extra columns, Error on extra columns | Add extra columns | The merging behavior that is applied when the tables don't have the same number of columns |
This action doesn't produce any variables.
Exception | Description |
---|---|
Missing Schema | Indicates that the data tables don't have the same number of columns |
Joins two data tables based on the specified join rule.
In the action's built-in wizard that helps you create the join rules needed, you can set multiple rules by specifying the column from the first and the second datatable accordingly, and the comparison operator that applies between them.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
First data table | No | Datatable | The first data table variable to work with. The specified variable must be defined through an action that generates a data table variable. | |
Second data table | No | Datatable | The second data table variable to work with. The specified variable must be defined through an action that generates a data table variable. | |
Join operation | N/A | Inner, Left, Full | Inner | The join operation that is used to join the two tables |
Join rules | No | Join rules as defined by the user | N/A | Define the columns and the operation to be used for joining the two data tables |
Argument | Type | Description |
---|---|---|
JoinedDataTable | Datatable | The generated data table after the join operation |
Exception | Description |
---|---|
Column name doesn't exist | Indicates that the provided column name doesn't exist |
Column index is out of range | Indicates that the provided column index is out of range |
Generates a data table from a CSV text.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
CSV text | No | Text value | The CSV text variable to read. | |
Trim fields | N/A | Boolean value | True | Specifies whether to automatically trim off the leading and trailing whitespaces of the extracted cells. |
First line contains column names | N/A | Boolean value | False | Specifies whether to use the first row of the CSV text to set the column names of the resulting data table. Enable this option to avoid reading the names as data into the table. Subsequent actions might access the data held by the data table using column names (instead of column numbers). |
Get CSV fields as text | N/A | Boolean value | False | Specify whether to retrieve the content of the CSV text fields purely as text or as the closest matching type. For example, Date Time for dates and Numeric for numbers. |
Columns separator | N/A | Predefined, Custom, Fixed Column Widths | Predefined | Specifies whether to use a predefined columns separator, a custom separator, or fixed column widths. |
Separator | N/A | System default, Comma, Semicolon, Tab | System default | The column-separator to parse the CSV text. |
Custom separator | No | Text value | The custom column-separator to use for parsing the CSV text. | |
Fixed column widths | No | Text value | The fixed column-widths to use for parsing the CSV text. Separate the widths using commas, spaces, tabs, or newlines. |
Argument | Type | Description |
---|---|---|
CSVTable | Datatable | The contents of the CSV text as a data table |
Exception | Description |
---|---|
CSV parsing failed | Indicates a problem parsing the CSV text |
Converts a data table to a CSV text.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table variable to work with. The specified variable must be defined through an action that generates a data table variable. | |
Include column names | N/A | Boolean value | False | Specifies whether the column names of the variant specified should become the first row of the CSV text. |
Use custom columns separator | N/A | Boolean value | False | Specifies whether to use a custom column separator or a predefined column separator. |
Separator | N/A | System default, Comma, Semicolon, Tab | System default | The column separator to use in the specified CSV text. |
Custom columns separator | No | Text value | The custom column separator to use in the specified CSV text. |
Argument | Type | Description |
---|---|---|
CSVText | Text value | The variable in which the CSV result is stored |
Exception | Description |
---|---|
Conversion failed | Indicates a problem converting the data table to CSV text |
Get the integral or fractional digits of a numeric value, or round up the value to a specified number of decimal places.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Number to truncate | No | Numeric value | The number or variable that holds the numeric value to truncate/round up | |
Operation | N/A | Get integer part, Get decimal part, Round number | Get integer part | Specifies the operation to perform on the given number |
Decimal places | Yes | Numeric value | 3 | The number of decimal places to round the given number up to. Enter 0 to return an integer as a result |
Argument | Type | Description |
---|---|---|
TruncatedValue | Numeric value | The truncated or rounded number |
This action doesn't include any exceptions.
Generate a random number or a list of random numbers that fall between a minimum and maximum value.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Minimum value | Yes | Numeric value | 0 | The lower boundary for the random number(s) to generate |
Maximum value | Yes | Numeric value | 100 | The upper boundary for the random number(s) to generate |
Generate multiple numbers | N/A | Boolean value | False | Specifies whether to generate a single random number or a list of random numbers |
How many numbers | Yes | Numeric value | 10 | Specifies how many random numbers to generate |
Allow duplicates | N/A | Boolean value | False | Specifies whether to permit or prevent the same number from appearing more than once in the random numbers list |
Argument | Type | Description |
---|---|---|
RandomNumber | Numeric value | The newly generated random number |
RandomNumbers | List of Numeric values | The newly generated list of random numbers |
Exception | Description |
---|---|
Failed to generate random number | Indicates that there's an error generating a random number |
Remove all items from a list.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
List to clear | No | List of General values | A list variable to remove its elements |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Remove one or multiple items from a list.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Remove item by | N/A | Index, Value | Index | Specifies whether to remove the item at a specified index or the item(s) with a specific value |
At index | No | Numeric value | The index number of the item to remove | |
With value | No | General value | The item to remove | |
Remove all item occurrences | N/A | Boolean value | False | Removes all the occurrences that match the item specified |
From list | No | List of General values | The list with items to remove |
This action doesn't produce any variables.
Exception | Description |
---|---|
Item index is out of range | Indicates that item index is out of range |
Item not found | Indicates that item doesn't exist in the list |
Sort the items of a list. Use items of the same type.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
List to sort | No | List of General values | The variable that holds the list to sort | |
Sort by list item's properties | N/A | Boolean value | False | If the list items are objects (such are files, folders, etc.), enable this option to sort the item by a specific property. Leave this option disabled to sort the elements by their default property (for example, file objects are sorted by their full path) |
First property to sort by | Yes | Text value | The name of an item's property to sort the list by. Refer to the help file for the property names of each object | |
Sort | N/A | Ascending, Descending | Ascending | Specifies whether to sort by the first property ascending or descending |
Second property to sort by | Yes | Text value | The name of a second property to sort the list by | |
Sort | N/A | Ascending, Descending | Ascending | Specifies whether to sort by the second property ascending or descending |
Third property to sort by | Yes | Text value | The name of a third property to sort the list by | |
Sort | N/A | Ascending, Descending | Ascending | Specifies whether to sort by the third property ascending or descending |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Create a random permutation of a list.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
List to shuffle | No | List of General values | The variable that contains the list to shuffle |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Merge two lists into one.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
First list | No | List of General values | The first list of items to merge | |
Second list | No | List of General values | The second list of items to merge |
Argument | Type | Description |
---|---|---|
OutputList | List of General values | The merged list. The initial lists aren't affected |
Exception | Description |
---|---|
The lists supplied are of incompatible types | Indicates that the lists supplied are of incompatible types |
Reverse the order of the items of a list.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
List to reverse | No | List of General values | The list whose items order to reverse |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Remove the multiple occurrences of items in a list, so that in the resulting list each item is unique.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
List to remove duplicate items from | No | List of General values | The list variable to remove duplicate items from | |
Ignore text case while searching for duplicate items | N/A | Boolean value | False | Specifies whether to perform case insensitive comparison of text while searching for duplicate items (only applies to lists made of text items) |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Compare two lists and create a new list with the items that are common to both.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
First list | No | List of General values | The variable that contains the first list to compare | |
Second list | No | List of General values | The variable that contains the second list to compare |
Argument | Type | Description |
---|---|---|
IntersectionList | List of General values | The new list of common items |
This action doesn't include any exceptions.
Compare two lists and create a new list with the items that are in the first list but not in the second.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
First list | No | List of General values | The variable that holds the first list to compare | |
Second list | No | List of General values | The variable that holds the second list to compare |
Argument | Type | Description |
---|---|---|
ListDifference | List of General values | The new resulting list |
This action doesn't include any exceptions.
Convert the contents of a data table column into a list.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Data table | No | Datatable | The data table with the column to convert into a list | |
Column name or index | No | Text value | The column name, if column names are defined, or the index number of the column to retrieve |
Argument | Type | Description |
---|---|---|
ColumnAsList | List of General values | The new list that holds the contents of the specified data table |
Exception | Description |
---|---|
Column name doesn't exist | Indicates that the column name isn't in the data table |
Column index is out of range | Indicates that the column index is out of range |
Convert a JSON string to a custom object.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
JSON | No | Text value | A JSON text, or a previously created variable containing one, to convert it to a custom object |
Argument | Type | Description |
---|---|---|
JsonAsCustomObject | General value | The converted custom object from the provided JSON |
Exception | Description |
---|---|
Error parsing the JSON | Indicates that there's an error parsing the specified JSON |
Convert a custom object to a JSON string.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Custom object | No | Custom object | The custom object to convert to JSON |
Argument | Type | Description |
---|---|---|
CustomObjectAsJson | Text value | The converted JSON from the provided custom object |
Exception | Description |
---|---|
Error parsing the custom object | Indicates that there's an error parsing the custom object |
Append a new item to a list.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Add item | No | General value | A value or a variable to add to the list. Provide a list of values to append multiple elements. If the list has a specific type of elements, the new element is converted over to that type | |
Into list | No | List of General values | A list variable to append the new elements to |
Argument | Type | Description |
---|---|---|
NewList | List of General values | The new list |
This action doesn't include any exceptions.
Create a new empty list.
This action doesn't require any input.
Argument | Type | Description |
---|---|---|
List | List of General values | The new list |
This action doesn't include any exceptions.
Increase the value of a variable by a specific amount.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Variable name | No | Numeric value | The numeric value to increase | |
Increase by | No | Numeric value | A numeric value, or a previously created variable containing one, to increase the variable by |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Decrease the value of a variable by a specific amount.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Variable name | No | Numeric value | A numeric value, or a previously created variable containing one, to decrease the variable by | |
Decrease by | No | Numeric value | A numeric value, or a previously created variable containing one, to decrease the variable by |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Runs the provided Power Fx expression.
Note
This action is only available for Power Fx enabled desktop flows (preview).
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
Expression | No | * | The Power Fx expression to run |
This action doesn't produce any variables.
This action doesn't include any exceptions.
Set the value of a new or existing variable, create a new variable or overwrite a previously created variable.
Argument | Optional | Accepts | Default Value | Description |
---|---|---|---|---|
To | No | * | The value to assign to the variable |
Argument | Type | Description |
---|---|---|
NewVar | * | The name of the variable to set |
Note
Variable names must start with either a letter or an underscore (_). After the first character, variable names can contain letters, underscores, and digits (0-9). Names are not case-sensitive, meaning myVar, myvar, and MYVAR are considered the same variable. The following reserved keywords cannot be used as variable names: if, then, else, switch, case, default, loop, from, to, step, foreach, in, while, next, exit, label, goto, call, output, function, block, end, error, wait, for, set, main, and, or, xor, not, true, false, yes, no, disable, on, repeat, times, throw, action, mod, global, input, import
This action doesn't include any exceptions.