App Manager allows you to export and import configuration using
...
an Excel spreadsheet.
Importing and Exporting spreadsheets
...
To access the Excel Export and Import functions, view the “Properties” of any app or object within the App Manager site:
...
Beneath the settings,
...
you
...
will see the following Tools section:
...
Info |
---|
Hint: You can also Ctrl + |
...
Click on the item |
...
in the navigation tree to immediately open the Properties. |
...
...
Export to Excel
This button will download a spreadsheet containing objects under the item that you are viewing.
...
For instance, if you opened the properties for an App (Edge ACM, AUTOSOL MQTT, etc.)
...
it will
...
export all of the objects under
...
the application
...
. If you opened the properties for an Object (a folder, a tag group, etc.)
...
, it will export that object and it’s children. This will export a file of type .xlsx with each individual sheet representing an object type.
Import from Excel
Here you can browse for an excel sheet in your file directory by clicking Choose Files
and selecting an .xlsx file
To import configuration from an Excel spreadsheet, click the “Choose Files” button and browse to the .xlsx file you wish to import. Once loaded, click
...
the “Import from
...
Excel” button to
...
complete the import process.
Editing configuration data in an
...
Excel spreadsheet
The Excel configuration can vary in
...
complexity based on object type. Most data types are easy to understand but some configuration items can be complex data structures that have to be represented in certain formats in excel.
...
In general most values are straight forward.
...
The importer feature will cast your input value into whatever data type it requires.
...
Most are straightforward and the Import process will convert the “value” from the sheet into the datatype required.
For instance, most properties for a “Tag” are simple. In the table immediately below, row 1 contains the name of the property to be set and each subsequent row represents the properties for a single “Tag”.
A | B | C | D | E | |
---|---|---|---|---|---|
1 | name | deadband | register | backfilltype | deadbandtype |
2 | ROCTags | 5 | 4001 | True | None |
3 | ModbusTags | 4 | 3001 | False | Every Scan |
4 | ControlLogixTags | 2 | 5001 | True | Absolute |
There are, however, more complex data formats that
...
are also
...
supported in
...
the Excel spreadsheet.
Arrays
Arrays are lists of values. The values can vary in type from integers, to strings, etc. In the example below, we are importing a Publish Schedule including it’s name and list of Publisher Groups an array of “Publish Groups IDs” into the Publish Schedule property “groupids”. This can be visualized as a table of data with one column containing the name of the schedule, one representing the position within the array, and the third column, “groupids”, contains the ID of the individual publish groups. In this sheet, the “Name” is repeated multiple on each row to signify the same schedule.
A | C | D |
---|---|---|
Name | GroupID Position | Publisher GroupID |
ROCSchedule | 0 | 123 |
ROCSchedule | 1 | 275 |
ROCSchedule |
The server expects data in this JSON format.
Code Block |
---|
"groupids": [1, 2] |
In excel we use (index) to represent the entries
You can add as many entries to the array in this manner. Empty values would be set to default.
Objects
...
2 | 783 | |
ModbusSchedule | 0 | 456 |
ModbusSchedule | 1 | 789 |
ModbusSchedule | 2 | 123 |
ControlLogixSchedule | 0 | 123 |
ControlLogixSchedule | 1 | 783 |
In the .xlsx file to be imported, the above data would transposed so that each Schedule is represented by a single row, with the position within array property placed within parenthesis adjacent to the property key (propertykey(position) ) e.g The column header for GroupID Position 0 is groupids(0), and all of the values for each Schedule that belong in GroupID Position 0 are in the same column.
A | B | C | D | … | AAAA | |
---|---|---|---|---|---|---|
1 | Name | groupids(0) | groupids(1) | groupids(2) | groupids(n) | |
2 | ROCSchedule | 123 | 275 | 783 | ### | |
3 | ModbusSchedule | 456 | 789 | 123 | ||
4 | ControlLogixSchedule | 123 | 783 |
Info |
---|
The “position” in the array must always start at 0 and be entered in the spreadsheet in numerical order. As many entries can be added to the array as necessary. |
Objects and Arrays of Objects
Objects are key-value pair structures that can contain one or more keys and values of any type.
...
The server expects data in this JSON format.
Code Block |
---|
"myobject": {
"key1": "value1",
"key2": 100
} |
In excel we use _ to represent the relation
You can add the keys you want to set, unset keys would be set to their default values
More complex data: Array of Objects
An example of this is trigger conditions in Edge ACM tags.
The configuration appears like this in the site:
...
This data then gets translated to
Code Block | ||
---|---|---|
| ||
"triggerconditions": [
{
"condition": "Greater Than or Equal to",
"value": 1,
"quality": "High"
},
{
"condition": "Equals",
"value": 0,
"quality": "Triggered"
}
], |
The equivalent in excel is complex at first, but easy to replicate
...
To explain,
triggerconditions(0)_condition indicates that this property is part of an array of objects, where this specific value for condition in the first (index 0) entry of the array.
triggerconditions(1)_quality would indicate the quality in the second (index 1) entry and so on.
<key>(index)_<inner_key> allows us to parse the contents of a grid and transform the data into a more complex shape.
...
Using the Tag object again as an example, we want to import a tag and its “triggerconditions” property which contains an array of trigger conditions which each have their own property values. In the table below, we have two Tags named ROCTag and ModbusTab which each have two separate trigger conditions.
A | B | C | D | E |
---|---|---|---|---|
name | TriggerCondition Position | TriggerCondition Condition | TriggerCondition Value | TriggerCondition Quality |
ROCTag | 0 | Greater Than or Equal To | 15 | High |
ROCTag | 1 | Equal | 40 | Triggered |
ModbusTag | 0 | Greater Than | 5 | Low |
ModbusTag | 1 | Less Than | 2 | Triggered |
In the .xlsx file to be imported, the above data would transposed so that each the single Tag, ROCTags is represented by a single row, with the position within array property placed within parenthesis adjacent to the propertykey and propertykey of the triggercondition following an underscore. (tagpropertykey(position)_ triggerconditionpropertykey) e.g The column header for Trigger Condition Quality at Position 0 is “triggerconditions(0)_quality” and all of the qualities for all triggerconditions at position 0 for each Tag are in the same column.
A | B | C | D | E | F | G | |
---|---|---|---|---|---|---|---|
1 | Name | triggerconditions(0)_condition | triggerconditions(0)_value | triggerconditions(0)_quality | triggerconditions(1)_condition | triggerconditions(1)_value | triggerconditions(1)_quality |
2 | ROCTag | Greater Than or Equal To | 15 | High | Equal | 40 | Triggered |
3 | ModbusTag | Greater Than | 5 | Low | Less Than | 2 | Triggered |