Every column definition has a type that specifies what values are allowed in the column, as well as flags that specify if the column is hidden, if it's required for input, and so on. This is adequate for many apps, but sometimes a more dynamic or data-driven mechanism is needed. This is what column constraints provide.
A column constraint is an expression that is dynamically computed to determine the behavior of a specific column when the user tries to enter or change its value.
Three column constraints govern the validity of input values for that column:
Valid_If: What are acceptable values?
Required_If: Is an empty value acceptable?
Editable_If: Can it be modified at all?
Two further constraints are related to the presentation of the column:
Show_If: Should the column be shown or hidden?
Suggested values: A list of values to prompt the user with
An additional constraint can help influence how records are updated:
Reset on edit: Clear the value whenever that record is edited by a user
To add a column constraint, click the Data > Columns tab and click the Edit icon at the left of the corresponding column definition.
New to expressions and formulas? See also Expressions: The Essentials.
Column constraints give you the power to define very subtle or complex conditions, but users will only see the resulting behavior. As an app creator, it's important to provide adequate explanations for the columns affected by these expressions--particularly for
Valid_If conditions--so users will know how to proceed if they provide an invalid column value. The best way to do so is by providing meaningful column descriptions.
When these expressions reference other fields in the row (not just
[_THIS]), it's best to ensure they're always "backward" references to fields the user has already seen (meaning columns that come before the column being considered in the spreadsheet and appear above the column being considered in the
Columns tab). Conditions containing "forward" references may be confusing to users and may cause problems with multi-page forms.