Expressions may be used in various AppSheet features -- Initial Values, App Formulas, Virtual Columns and Column Constraints (Valid_If, Show_If, Required_If, Editable_If) -- to customize app behavior and provide your users with advanced functionality. Expressions in this article align with the Yes/No Expressions in the Expression Builder of the Editor. The Expression Builder can be found anywhere you are able to enter a formula/expression, noted by a little "flask" symbol next to it. Clicking on the flask will bring up the Expression Builder. The Expression Builder is "context-aware," i.e. it shows you expressions that are relevant to the specific table you are editing. Also included in the builder is an "instant" expression checker, to verify that the expression is valid.
Use any of the following values as part of an expression:
- Words, Dates, Times. Highlight all values with "quotes", except for numeric values, e.g. "Value","01/01/2016", "12:00:00" for time, "012:00:00" for duration.
- Numeric values are noted just as they are, e.g 10.
- Name any column using square brackets around the exact column name: [ColumnName]. When combining a [ColumnName] with another value, put the expression in (parentheses). May be used in any expression; however, when used in the Initial Value feature, it may only refer to a separate table.
- Use [_THIS] as a "virtual column name." It refers to the value of the current column (used in Valid_If, Show_If, Required_If, Editable_If conditions).
- Use [_THISROW] as a "virtual reference column." It refers to the current row. For example, use [_THISROW].[ColumnName].
When an input column is 'editable' it can be modified by the user. The Editable_If column constraint is useful to lock down a certain column (prevent user edits) depending on the value already in the column or on the values of other columns.
An Editable_If constraint is a condition expression that indicates whether a specific column is 'editable' in an input form (e.g. ISBLANK([_THIS]) allows edits if the current value is blank, but once there is a value, it cannot be edited). Another common use case is to give certain users the ability to edit a field but make it read-only for others (eg: USEREMAIL() = "email@example.com").