AppSheet Expressions Explained: The Complete Beginner's Guide
AppSheet expressions are the engine behind every smart app. This guide covers the five expression types you need to know, the three mistakes that break them, and how to build your expression vocabulary fast.
What Is an AppSheet Expression?
If you have spent any time in AppSheet, you have encountered expressions. They are the formulas that power your app's logic: calculating values, filtering data, triggering automations, and controlling what users can see and do.
AppSheet expressions look similar to spreadsheet formulas, but they operate differently. Instead of referencing cells (A1, B2), they reference column names directly. Instead of running once when a cell is calculated, they run dynamically as data changes.
Here is a simple example. In a spreadsheet, you might write:
=IF(A2="Complete", "Done", "In Progress")In AppSheet, the same logic looks like:
IF([Status]="Complete", "Done", "In Progress")The column name goes in square brackets. The logic is the same. But now this expression can be used in a virtual column, a show-if condition, a valid-if rule, or an automation condition — anywhere in the app that needs to evaluate status.
The Five Expression Types You Need to Know
1. IF and IFS — Conditional Logic
The workhorse of AppSheet expressions. Use IF for a single condition, IFS for multiple conditions evaluated in sequence.
IFS( [Priority]="High", "🔴", [Priority]="Medium", "🟡", [Priority]="Low", "🟢", TRUE, "⚪" )
2. AND, OR, NOT — Boolean Logic
Combine multiple conditions. Essential for complex show-if rules and valid-if validation.
AND([Status]="Active", [Contract_End_Date] > TODAY())
3. FILTER — Pulling Related Records
Returns a list of rows from another table that match a condition. The foundation of relational data in AppSheet.
FILTER("Tasks", [Project_ID] = [_THISROW].[Project_ID])
4. LOOKUP — Getting a Single Value
Returns one value from a related table. Use when you need a specific field from a related record.
LOOKUP([Client_ID], "Clients", "Client_ID", "Contract_Value")
5. CONCATENATE and TEXT — String Manipulation
Build formatted strings from multiple values. Essential for document generation and display columns.
CONCATENATE([First_Name], " ", [Last_Name], " — ", TEXT([Contract_Value], "$#,##0"))
The Three Mistakes That Break Expressions
Mistake 1: Referencing a column that does not exist in the current table.
AppSheet expressions run in the context of a specific table. If you write
[Client_Name] in a Tasks table that does not have a Client_Name column, the expression will fail. Use LOOKUP or a related column reference instead.Mistake 2: Comparing incompatible types.
You cannot compare a Text column to a Number without conversion. Use
VALUE([Text_Column]) to convert text to a number, or TEXT([Number_Column]) to go the other direction.Mistake 3: Forgetting that FILTER returns a list, not a value.
FILTER() returns multiple rows. If you need a single value from the result, wrap it in ANY() to get the first match, or COUNT() to get the number of results.Building Your Expression Vocabulary
The fastest way to get better at AppSheet expressions is to build a personal library. Every time you solve a problem with an expression, document it: what it does, where it is used, and any gotchas.
After building hundreds of AppSheet applications, I have accumulated over 600 documented expressions covering everything from date calculations to complex approval workflows. The patterns repeat. Once you have solved a problem once, you can reuse the solution in every future app.
The Expression Cheat Sheet I offer as a free download covers the 50 most commonly used expressions with real examples. It is the reference I wish I had when I was starting out.
Want to go deeper on AppSheet expressions? Book a consulting session and we can work through your specific use case together.