New INPUT() function --- binding dynamic inputs to a data change action

SUMMARY:
We now have an INPUT(, ) function that can be used to define inputs that are dynamically “bound” to values via user input or via other actions that compose them.

This is a beta feature but available for anyone to try. If you run into issues please let us know. As always, we would love your feedback and suggestions.

This addresses two popular feature requests:

This only works today for limited scenarios involving the SetColumnValue action being invoked from a Ref Action. There’s more coming that extends this mechanism to Add Row actions and to automation tasks.

DETAIL:
Much of the basic AppSheet app interface uses “CRUD” operations — in particular, add/update operations on row data driven by the column structure of the tables. We automatically generate interfaces (UI or data change actions) for these CRUD operations based on the schema. Using these interfaces, end-users or application logic can “invoke” CRUD operations and pass in the appropriate “inputs” to configure them.

However, more advanced AppSheet interfaces use Actions (in UI and automation) and Tasks and Processes (in automation). Actions, Tasks, and Processes are logical operations rather than physical operations. We currently use expressions to configure the behavior of these logical operations. But so far, we had no mechanisms to pass dynamic “inputs” into them. It is important to do so as AppSheet apps have a compositional model — individual elements can be composed into more complex elements. In the case of actions, individual actions can be composed into complex actions. Inputs for actions are a mechanism to “parametrize” the logic so that the same action can behave differently depending on how it is composed.

See Dynamic inputs for data change actions | AppSheet Help Center for detailed description

32 Likes

Thanks you for pushing new feature available to us!

I quickly tested with input expression. The expression was validated on expression assistant, and hit the action. Unfortunatley nothing was happened on my account. (enterprise)
Still new code is under rolling out?

2 Likes

Game… Changer

3 Likes

It might be. Please refresh the browser and try.
Take a simple action that sets the value of a Number column Age.
Instead of Age. :: 50
try Age :: INPUT(“AgeInput”, 50)

I’ll try to provide a public sample in a few hours.

5 Likes

Yeah, I heavy re-load the browser and now I see the new dialogue window to put the data!!!

On the browser, pop up window is placed in upper right corner, it could be better to see in the center (centre) of the window, maybe?

2FE452D0-5BE1-4B31-91DA-77A0126717DC

Another quick test with Enum/Enumlist.

input(“enum”, "“im default value”)

input(“enumlist”, list(“a”,“b”,“c”))

Expression was valid, but the default value(s) was not selected. Currently it is beta, so not working with enum/enumlist type fields, but I reckon it will work.

7 Likes

Looks great. :slight_smile:

Agreed! Loved it. :slight_smile:

This is Just Amazing. Much Needed One!

Would be really cool if it is centre.

5 Likes

please show me how to do that

This update is very fantastic for me!

I still don’t understand how to use this.
However, when I set it as follows, I was able to realize the function I wanted!
(Bulk update by user input)

5 Likes

What we have been implemented in our app to do the same operation is

  1. to create slice just for the one column
  2. Create action to open up the form view out of this slice.
  3. Place this action as inline action for that particular column

This is working fine while we need to spend bit of time to contruct the multiple slices and actions, but good point is we are able to accomodate any type of columns.

This new action is basically working in the same way as this, but so far text type column only (presumably just because of Beta)

If the target filed has existing value, the default value in input expression is overwritten by the existing value, I believe this behavior is by design. Based on that, this input expression would works in exactly same way as one we currently have in our apps. (multiple slices per column and inline action to open up each small chunk of form views.)

Thats my understanding so far.

2 Likes

Possibly my understanding is wrong, but input expression can only live with data change action, not anywhere else. More specifically, action type , set the value of some column in this row type action.
If so, expression syntax seems to be bit repetitive.

Snag_5a00d80

We are already selecting the target column name. Then once again we need to put the same column name as 1st argument for the expression, the reason why I m saying “repetitive”.

As another gentle feedback.

2 Likes

It takes us to another screen each time we click and from user point of view it was very difficult to understand where they are navigated to. Right now, it just stays inside a single screen. That’s really great. Maybe if we can attach actions on save just like form save. Then this is totally a game changer !

Wow! :heart_eyes:

Many thanks @praveen for bringing this into beta. Looking forward to trying this out.

1 Like

Here is the action that does the work in Parent table.

Here is the actions. First action will add an empty row to child row with this Job ID.

Second action will execute an action on the last row added related to this Job ID.

Here is the formula to lookup the last row just added.

This is the action that is executed to open the popup using Input()

6 Likes

How to do add line item button under detail
view?

1 Like

Here is the setup. It’s a virtual column with display name kept blank (" ")

3 Likes

thanks Rifadm817, you’re expert

2 Likes

Thanks @Steven_Aung for making one of the requests that led to this:

The other request for from @GreenFlux :

Praveen’s citations went to comments, not the initial requests, so I wanted to make sure that the initiators got proper credit. :slight_smile:

3 Likes