To the best of my knowledge, AppSheet doesn’t expose internal IDs for views or actions. You reference them by name as strings.
For views in expressions:
LINKTOVIEW("MyViewName")LINKTOFILTEREDVIEW("ViewName", [Filter Expression])
Actions aren’t invoked via expressions at all—they’re triggered through the UI or automation, and chained by referencing other action names.
Your control table approach for views makes sense, and you can use the view name as your key. For actions, it’s trickier. Action names are usually unique, but it’s possible for a system-generated action and a user-created action to share the same name. So you might need a compound key (action name + associated table) to be safe.
I ran into a similar challenge when building a parser suite that analyzes AppSheet’s Application Documentation export. Even in that HTML file, there are no separate IDs—views appear as <h5 id="viewMyViewName"> and actions as <h5 id="action_MyActionName">. The name itself is the only identifier. Columns are even less unique; you need table name + column name to identify them precisely.
If you’re interested in analyzing app structure and dependencies externally, you might find my parser tools useful. They work with the Application Documentation HTML export: