Validations
This page describes the various validation options available inside the importer.
Last updated
This page describes the various validation options available inside the importer.
Last updated
While creating a sheet you can specify the column to be any of the data types mentioned below. If the incoming CSV data does not match the column data type (and its validation rules), then the user will see a relevant error message identifying what the problem is and how to fix it.
This is the default column data type. It accepts any alphanumeric string. You can provide the Min Length
and Max Length
parameters to specify the acceptable length of the text data.
This Number column data type accepts integer and float strings only. Additionally, you can provide the Min Value
and Max Value
parameters to specify the acceptable range of numbers.
The column under validation must be formatted as an email address.
The column under validation must be formatted as a date. You have to select a Date Format
from the dropdown list to specify the acceptable format. The default format is 'MM/DD/YYYY'. If your desired format is not found in the list, you can simply provide your custom format using the formatting tokens below.
Token | Output | |
---|---|---|
For example, specifying a token string dddd, MMMM Do YYYY, h:mm:ss
will require the date to be in the format Sunday, February 14th 2010, 3:25:50 pm
.
The column must be formatted in a time format. You have to select a Time Format
from the dropdown list to specify the acceptable format. The default format is 'HH:mm:ss'. If your desired format is not found in the list, you can simply provide your custom format using the formatting tokens below.
The column under validation must be able to be cast as a boolean. Accepted inputs are true, false, TRUE, FALSE, 1, 0, yes, no, y, n, on, off, enabled, and disabled.
The column data must match the given regular expression. You need to specify the Regex
and the importer will pattern match it with the incoming data.
The column under validation must be an IP address. You have to select the IP Version
.
The column under validation must be a valid URL.
The column under validation must be formatted as a credit card number. Acceptable formats are 5555555555554444, 5555-5555-5555-4444 and 5555 5555 5555 4444.
The column will be validated for phone number formats based on the libphonenumber.js library. You have to select a default country code. If the incoming phone number does not have a country code then this default country code will be used for validation.
The column data should be in a currency amount format. You can specify currency formatting options based on the Validator.js library.
With the List data type, you can specify a list of acceptable values. The importer will compare the CSV column data with the list of acceptable values and throw a validation error if there is a mismatch. You can specify a list of acceptable Values
and related Display Labels
. The importer will match the column data with the list of Display Labels
. If the data passes validation then the Values
corresponding to the Display Labels
will be pushed to the destination. For example say, you configure the List column as shown below:
In this case, the acceptable data in the CSV column will be Small, Medium, and Large. Based on the actual data found in the user CSV, the values s, m or l will be pushed to your data destination. This allows you to accept readable values from your users while pushing data to your system that is in a format it understands.
Allow Other Values
Selecting the 'Accept Other Values' option will allow the users to input values that are not found in the predefined list of acceptable values.
If you enable this option, the importer will accept List Values interchangeably with Display Labels as valid data for the column.
Refer to the list of items in the image above. If the column contains the value "NYC," the importer will fail validation since it only accepts the display label "New York City." To enable the importer to accept "NYC" as well, you need to activate the "Accept List Values" option.
Sometimes, you may want to use more than one list such that the items available in a second drop-down list dependent on the selection made in the first drop-down list.
Let us call them dependent lists. Below is an example of a dependent list.
You can see that the options in the City column depend on the selection made in the Country column. If you select 'USA' in Drop Down 1, then you will cities from the USA, but if you select Canada in Drop Down 1, then you see the cities from Canada in Drop Down 2.
The same functionality can be achieved in CSVbox via a combination of List and Dependent List column types (or a combination of Dynamic List and Dependent Dynamic List column types).
Here are the steps to create conditional lists using the example above:
Create a column 'Country'. Configure column type as 'List'.
Go back to the 'Country' column and add the list of valid values.
If you change the name of the primary column or reorder the priority of any of the columns, then you need to reassign the primary column in the Dependent List column settings.
The Display Label and the Value should be unique across all the items. Primary items cannot share dependents having the same Display Label and/or same Value.
This is similar to the List type column above where the importer will validate the column data against a list of values. However, instead of providing a static list of values, with the Dynamic List column type, you can now specify a list of acceptable values in real-time via an API.
The API should return the list of values in the JSON format as shown below.
For each list item, the value
field is mandatory while display_label
is optional.
You have the option to attach the custom user attributes as query parameters to the Dynamic List API request. csvbox_ prefix will be added to the custom user attribute query parameters. This will help you identify the users/environment and return back a relevant list of values.
For authenticating the requests you can pass the authorization headers via the dynamic_list_request_headers initialization option.
Sometimes, you may want to use more than one list such that the items available in a second drop-down list depend on the selection made in the first drop-down list.
Let us call them dependent lists. Below is an example of a dependent list.
You can see that the options in the City column depend on the selection made in the Country column. If you select 'USA' in Drop Down 1, then you will cities from the USA, but if you select Canada in Drop Down 1, then you see the cities from Canada in Drop Down 2.
The same functionality can be achieved in CSVbox via a combination of Dynamic List and Dependent Dynamic List column types (or a combination of List and Dependent List column types).
Here are the steps to create conditional lists using the example above:
Create a column 'Country'. Configure column type as 'Dynamic List'
Go back to the 'Country' column and configure the API that will fetch valid values from your application for 'Country' as well as its dependent column i.e. City column. Your API should return the list of values in the JSON format as shown below.
Note the dependents
object above. It contains the list of valid values for the dependent column based on the primary column value.
If you change the name of the primary column or reorder the priority of any of the columns, then you need to reassign the primary column in the Dependent Dynamic List column settings.
The Display Label and the Value should be unique across all the items. Primary items cannot share dependents having the same Display Label and/or same Value.
The Multi-select List data type is similar to the List data type, where you can specify a list of acceptable values. While the List data type accepts only one value per cell, the Multi-select List accepts multiple comma-separated values.
The importer will compare the values in the incoming data with the list of acceptable values and throw a validation error if there is a mismatch.
Allow Other Values
Selecting the 'Accept Other Values' option will allow the users to input values that are not found in the predefined list of acceptable values.
This is similar to the Multi-select List type column above where the importer accepts multiple comma-separated values. However, instead of providing a static list of values, here, you can now specify a list of acceptable values in real time via an API.
The API should return the list of values in the JSON format as shown below.
The importer will attach the custom user attributes as query parameters to the Dynamic List API request. csvbox_ prefix will be added to the custom user attribute query parameters. This will help you identify the users/environment and return back a relevant list of values.
For authenticating the requests you can pass the authorization headers via the dynamic_list_request_headers initialization option.
You can check/uncheck the Required
checkbox on the Column Settings window. The column data must be present, and not empty if the Required
checkbox is ticked.
Token | Output | |
---|---|---|
Create a column 'City'. Configure column type as 'Dependent List'. Select 'Country' as the Primary column.
For each valid country value, you can add dependent (city) values as shown below.
Create a column 'City'. Configure column type as 'Dependent Dynamic List'. Select 'Country' as the Primary column.
Month
M
1 2 ... 11 12
Mo
1st 2nd ... 11th 12th
MM
01 02 ... 11 12
MMM
Jan Feb ... Nov Dec
MMMM
January February ... November December
Quarter
Q
1 2 3 4
Qo
1st 2nd 3rd 4th
Day of Month
D
1 2 ... 30 31
Do
1st 2nd ... 30th 31st
DD
01 02 ... 30 31
Day of Year
DDD
1 2 ... 364 365
DDDo
1st 2nd ... 364th 365th
DDDD
001 002 ... 364 365
Day of Week
d
0 1 ... 5 6
do
0th 1st ... 5th 6th
dd
Su Mo ... Fr Sa
ddd
Sun Mon ... Fri Sat
dddd
Sunday Monday ... Friday Saturday
Day of Week (Locale)
e
0 1 ... 5 6
Day of Week (ISO)
E
1 2 ... 6 7
Week of Year
w
1 2 ... 52 53
wo
1st 2nd ... 52nd 53rd
ww
01 02 ... 52 53
Week of Year (ISO)
W
1 2 ... 52 53
Wo
1st 2nd ... 52nd 53rd
WW
01 02 ... 52 53
Year
YY
70 71 ... 29 30
YYYY
1970 1971 ... 2029 2030
YYYYYY
-001970 -001971 ... +001907 +001971 Note: Expanded Years (Covering the full time value range of approximately 273,790 years forward or backward from 01 January, 1970)
Y
1970 1971 ... 9999 +10000 +10001 Note: This complies with the ISO 8601 standard for dates past the year 9999
Era Year
y
1 2 ... 2020 ...
Era
N, NN, NNN
BC AD Note: Abbr era name
NNNN
Before Christ, Anno Domini Note: Full era name
NNNNN
BC AD Note: Narrow era name
Week Year
gg
70 71 ... 29 30
gggg
1970 1971 ... 2029 2030
Week Year (ISO)
GG
70 71 ... 29 30
GGGG
1970 1971 ... 2029 2030
AM/PM
A
AM PM
a
am pm
Hour
H
0 1 ... 22 23
HH
00 01 ... 22 23
h
1 2 ... 11 12
hh
01 02 ... 11 12
k
1 2 ... 23 24
kk
01 02 ... 23 24
Minute
m
0 1 ... 58 59
mm
00 01 ... 58 59
Second
s
0 1 ... 58 59
ss
00 01 ... 58 59
Fractional Second
S
0 1 ... 8 9
SS
00 01 ... 98 99
SSS
000 001 ... 998 999
SSSS ... SSSSSSSSS
000[0..] 001[0..] ... 998[0..] 999[0..]
Time Zone
z or zz
EST CST ... MST PST Note: as of 1.6.0, the z/zz format tokens have been deprecated from plain moment objects. Read more about it here. However, they *do* work if you are using a specific time zone with the moment-timezone addon.
Z
-07:00 -06:00 ... +06:00 +07:00
ZZ
-0700 -0600 ... +0600 +0700
Unix Timestamp
X
1360013296
Unix Millisecond Timestamp
x
1360013296123
AM/PM
A
AM PM
a
am pm
Hour
H
0 1 ... 22 23
HH
00 01 ... 22 23
h
1 2 ... 11 12
hh
01 02 ... 11 12
k
1 2 ... 23 24
kk
01 02 ... 23 24
Minute
m
0 1 ... 58 59
mm
00 01 ... 58 59
Second
s
0 1 ... 58 59
ss
00 01 ... 58 59
Fractional Second
S
0 1 ... 8 9
SS
00 01 ... 98 99
SSS
000 001 ... 998 999
SSSS ... SSSSSSSSS
000[0..] 001[0..] ... 998[0..] 999[0..]
Time Zone
z or zz
EST CST ... MST PST Note: as of 1.6.0, the z/zz format tokens have been deprecated from plain moment objects. Read more about it here. However, they *do* work if you are using a specific time zone with the moment-timezone addon.
Z
-07:00 -06:00 ... +06:00 +07:00
ZZ
-0700 -0600 ... +0600 +0700
Unix Timestamp
X
1360013296
Unix Millisecond Timestamp
x
360013296123