General Availability fort the INPUT functionality - with updated syntax & added scope

 

CURRENT STATUS: Rolled out to 100% of accounts

 

Hi everyone,

I’m very excited to announce that we are launching the INPUT functionality to General Availability. App creators can now define when information is passed from one context to another via dynamic “inputs” so that actions and tasks behave differently based on these input values. Effectively, app creators can now “parameterize” the logic of some of the actions and tasks. 

The INPUT functionality enables multiple types of rich and complex use cases, such as:

  • Prompting app users with an input box when the app user taps on an action button
  • Updating a set of rows from one table using values from the row of another table
  • Reusing AppSheet automation tasks across different bots

 

INPUT example

Probably the simplest example is with an app that lists tasks that have  a status field and a comments field. App users are asked to update their task status to “Done” and provide information in the comments field on how they accomplished the task. App creators can now dynamically prompt the app user for that information (and only that information) in a pop-up modal when they mark the task as “Done”. It was already possible to provide a similar flow, but (a) the app creator had to do more work and (b) the user experience for app users was not as intuitive.

Arthur_Rallu_0-1701891304522.gif

 

A little bit of history

The INPUT functionality unlocks a number of highly requested features that make app creation easier and expand what AppSheet apps can offer. Back in 2021, the INPUT functionality was released to Beta (a.k.a. Preview) but the team had some lingering questions. It is now (finally) Generally Available to all app creators. There are a few changes though. First, the syntax has been updated so that the feature is more easily discoverable, its usage is more explicit, and the syntax itself is more consistent with other existing patterns in AppSheet. Second, its scope has been expanded to now support Automation tasks for reusability purposes.  

Arthur_Rallu_1-1701891335124.png

Many app creators have been using this functionality in their apps since its Beta launch, but others may have been hesitant to rely on it because it was still in Beta and so we are glad to finally make it Generally Available to everyone. 

 

As Liz called out in our release notes on Monday, this is currently rolling out and should become available to all AppSheet users in the next 10 days or so. When it is available to you, we ask that you start using the new syntax. 

 

Old and new syntax for existing apps already leveraging this functionality

In order to properly maintain this feature, we will have to turn off the old syntax in the future. Until then, all apps and automations using the old syntax will keep on working without app creators needing to take action. We also understand that adopting the new syntax in existing apps represents some amount of work by app creators and we want to give you time to adjust. In an effort to turn off the old syntax some time in June 2024, we plan on proceeding as follows:

  • Within a few weeks you will start seeing warning messages in the editor for apps that leverage the old syntax 
  • At the same time, for simple cases leveraging the old syntax, app creators will be able to migrate from the old to the new syntax with a single click and check that everything is working fine 
  • Starting on March 30th, for simple cases, the old syntax will be automatically migrated to the new syntax if app creators have not taken action
  • Starting on April 30th, for more complex cases, app creators will be prompted to use the new syntax when they open the editor for such apps

We will be communicating to you about this as we go through that process. 

 

Let us know if you have any questions (but don’t forget to check the FAQ section below first :))

Thank you,

Arthur Rallu, for the AppSheet team

 

FAQ

  • What resources are available about this feature?

Documentation is available at Doc for input in Tasks, Doc for input in Data Change Actions.

The team talked about this feature in an AppSheet Office hours in September. 

I also want to mention this community post by @Kirk_Masden. It walks you through the capabilities of that feature in a very simple way. If you're new to using this functionality, it's a great way to discover it IMHO. The app used to be implemented with the Beta syntax but Kirk updated it recently to use the new syntax (Thank you Kirk!).

 

  • Why is the legacy documentation (here and here) still saying the INPUT functionality is in Beta?

Until the rollout is complete, we are keeping this documentation as is. We will tag it when the rollout is complete and add a link to the new documentation.

 

  • Can I use the old and new syntaxes together?

The two syntaxes can be used in the same app for two different tasks or actions,  but the two syntaxes cannot be used within a single action or a single task. In other words, in an action with 2 inputs, both of them must be specified with the same syntax.

 

  • During the Sept AppSheet Office hours, the team said they’d publish a template app. Is it available now?

Not yet, but we still plan on doing it. We’ll update this FAQ and add a comment to this thread when it is done. 

 

  • When will the input functionality be supported by other data actions?

We are aware of this request, but we don’t have a timeline to share at this point.

 

37 121 31.7K
121 REPLIES 121

It seems that Appsheet just changed the new expression for input but it can't prefill value as we set. Please feedback?|

When you create a "set the values" action,
If you see "Advanced," you can use the new INPUT function.

画像.png

Very usefull Thank you!

Just to clarify, the new syntax should not impact input(), as long as they are not used in the same data action or task. If input() breaks for some reason, please file a support ticket. Thank you! 

I continue to run into issues with both versions of INPUT. The save button won’t function. I’ve been on with support for two weeks now who confirm there is no validation or requirement in my app that should cause it to fail. Instead that “it’s a large app” and the function is in beta, so it may not work as expected. Complete dead end and I’m confident it’s not being worked on. They just keep trying to close my case.

 I updated my old syntax to the new syntax and received this error:

New Syntax:

 

Daisy_Ramirez_0-1707395694311.png

old syntax:

Daisy_Ramirez_1-1707395760340.png

Note: In my case [missed reason] represents the field's dropdown REF options. I did notice the Advanced area for manual inputs but hoping it's simply another option.

Has anyone else run into this error? I didn't see it here in the string unless I missed it of course.

I get that message as well, but when I keep going and Save, it works fine.  Seems to just be an issue with the syntax checker.

I think I see the issue.  Look again and this illustration of how the old and new syntax are related:
Screenshot 2024-02-09 at 10.43.d37.png
Notice that the "test" that appears in the old syntax disappears from the new syntax.  

So, in your case [_INPUT].[Missed Reason] might be what you're looking for.

@Daisy_Ramirez Not sure if related but when I changed mine, I noticed I had to first add the input under advanced section and save before I used it in expression.

 

17073982134342150271725239252272.jpg

17073982626602014797638788349447.jpg

Thanks Arthur Rallu

Bom dia

Como colocar em ordem alfabética listas criadas no app? 

Bom dia colega,

Este tópico é da funcionalidade INPUT.

Caso seja uma lista para o INPUT você pode suar a função ORDERBY() OU SORT().

Vai depender do seu caso específico. Quando eu tenho listas grandes nos meus apps, sempre coloco na fonte de dados (no meu caso uso as do Google Sheets) e populo a lista no app com essa fonte e uso o SORT().
https://support.google.com/appsheet/answer/10107698?sjid=6194421272951379674-SA


Espero ter ajudado!

 

Good to know. Thanks so much for the update. 

Hi,
I've been working on an application for 10 days now.
Everything worked fine
Then 2 days ago, when I opened the application on my mobile, the INPUTs no longer worked! 
But it's still working on desktop

What's happened ?

 

Can you file a support ticket with more details? thank you!

Hi,
Where is the support ticket page ? Do you mean "Contact support" ?

eric_niedergang_0-1708337719066.png

 

Hi @Arthur_Rallu and @Lusha_Wang1 

It seems that Appsheet only changes the expression of the Input function but it didn't apply for prefill data in action as I set.

Input function didn't prefill values from the actionInput function didn't prefill values from the action

@hien_nguyen   Has your problem been fixed?  I am finding the exact same problem to prepopulate based on a default value being set.

bonjour, oui il faut déclaré la fonction dans avancé

philippe51_1-1708928569538.png

 

philippe51_0-1708928534123.png

 

Not yet brother. 

I have been trying to use the solution with no success on a very basic implementation.

Have a Date Time column in TaskSchedule Table called Tempstore.

Wim_V_0-1708379816427.png

Created Input tempDateStore of type DateTime.  Used Action ( Data: Set the value for some columns in row.) and tried to set value in column TempStore with [_INPUT].[tempDateStore]

 

Wim_V_2-1708380090875.png

When going to the form and press the action, the pop up with no ability to enter a value.

Wim_V_3-1708380203486.png

Any help in why this is not working would be appreciated.

 

 

Just uncovered why:  if the field is set to NOT SHOW : 

Wim_V_5-1708380536255.png

The dialogue box pops up but the ability to use enter is not rendering.

By making it 'show', the ability to enter is now available. 

I am unsure this was the intention of the function for INPUT to be effected by the field having show/or not, but seems not be intuitive to the purpose of the functionality.  The Input should still be available as it is independent due to be a collection action from the user.   Specifically in that the column can still be selected if "SHOW" is off.  The assumption is you can still manage the data.

The use case is to have a 'none visible' ability to store data that will be used for other purposes.  In my example, the goal was to be able to use the input and 'add a new row to another table using values from this row'  with this data element, as the Advance functionality for INPUT is not available for that Action which I am unsure why it would be available for that action.

If there are other options I am curious for the advice. 

 

 

 

@Arthur_Rallu  @Lusha_Wang1  Maybe you can consider what @Wim_V wrote. The use of the ShowIF is very useful also for the INPUT function. Right now we are able to manage this via CONTEXT("View") or CONTEXT("ViewType") to enter the view name or view type where the INPUT window will pop up.

Maybe you could add the option CONTEXT("ViewType")="Input" ? With that we could easily manage to show a column in an INPUT window, but not in a detail view (for example).

Bonjour, cela ne fonctionne pas 

input("Controler par ?","")  => [_input].[Controler ?]

cela donne:

Unable to find column '_input', did you mean 'Vendeur'?

 

input("Controlled by ?", "") => [_input].[Control ?]
this gives:
Unable to find column '_input', did you mean 'Seller'?</blockquote?

I think the difference between "Controler par ?" and "Controler ?" may be the problem.

The INPUT Type doesn't have REF. What if I want to select from a list of REF

When I use the old syntax, if the column has REF type, the INPUT function will show the Suggested Values from that column:
MapleAikon_0-1709003016500.png

But I don't know how to use the new INPUT, there is no REF type in the list of INPUT type:
MapleAikon_1-1709003366594.png

 

Bon, moi je met texte et cela fonctionne

The new syntax works great for me except the "default value" functionality. It returns an empty prompt, while default value is specified. When will this be fixed?

CC @lizlynch 

@Fabian_Weller @jujujuz - Passing this on to the AppSheet team. Thanks for the ping!

Hello @Arthur_Rallu @lizlynch ,

I have a question to the new INPUT syntax.

With the old functionality I am able to add a photo using the syntax

            input("Foto","x.jpg")

"Foto" is a field defined with image type. The new syntax does not allow to select an image type. Does it mean I am not able anymore to add a photo using input functionality?

Thanks

ping, any news on my question?

I have a same problem. Why is the image type not available? I tried using new input syntax for capturing images, and with the field type set to "text" the outcome was a failure in sync.

@chris60 thanks for reporting the issue about image type, we will take a look at the issue. 

I think if select a "text" type for input, as long as the corresponding column type is image, then we will be able to select an image. @Kuba_O can you share you app with me and explain what the sync error is? 

hi, is the input available for other action than change data

For example, add data from row, it is useful tu create a new row with some data copied and other filled from an input...

regards

@Arthur_Rallu @Lusha_Wang1 

I tried to create "dynamic input action" where the input is required on the certain condition, while the input is not required if not etc.  Tested some expression where the input syntax is nested inside IF/IFS condition, but it was not working as we expected. 

Even the below syntax did not prompt input modal.

IFS(TRUE,[_INPUT].[InputName])

Input expression is going to be ignored once it is nested inside other function? Is this expected behavior?

@takuya_miyai 

@Koichi_Tsuji yes, input modal will not pop up when input expression is nested inside other functions. 

"Don't use nested expressions, such as [Amount]+[_INPUT].[Amount]. If you specify a nested expression, the user prompt won't be displayed."

What's the standard workaround for this? Will it be updated to allow this?
I want to make a button so I can subtract Quantity I.E:

generativegeorg_0-1711581982912.png



I guess I could do the whole thing with a slice form view (only visible from the slice), launched from an action on the main detail view, which triggers an action on save to set qty. But that seems like it's not the way.

I typically hold the input value in another column, then run the calculation with whatever method you choose, action, bot, resetOnEdit & initial value,...