I have a long form that users fill out over the course of 6 weeks on average. I can't split it up because each field is entirely independent from the others but they get filled out in order. I can't split it up by time as many might get completed quickly and others might take weeks but the lengths vary. They also can't wait to fill it out until the end as I have tracking on when they edit what fields to make sure they're staying on track to finish ~6 weeks. The students are "technically" submitting the form each time of course, I just have another view that lets them re-edit the answers and they normally add new data to new columns instead of editing old data.
So the issue is that this form is very annoying to scroll through and fill out as the information you first see in the form is almost always the oldest and least relevant. What would make it nice is if the user was auto-advanced to the next empty field in the form.
Is that possible in AppSheets?
Solved! Go to Solution.
Thank you for all the details. Since the user may need to revisit the questions , please explore the approach shown in the video below.
Assuming each user has her/his own record to fill in the form, you could add an enumlist button at the top of each form tab as shown in the video below. When the user selects the respective question number you can either show or hide that question using Show_If property of that field based on enumlist selection.
https://www.loom.com/share/6cd8db7e4011424eae4e3a00e6451701
In the first 5 questions in "First Page" the show if expression is IN("1",[QSelect]) for Q1 and so on.
In the next 5 questions in "Second Page", the show if expression is NOT(IN("6",[QSelect2])) for Q6 and so on.
You can use the CONTEXT() function to hide the fields on THAT Form only:
CONTEXT("View") = "Form View Name Here"
I think you may wish to elaborate a few points you have mentioned. There maybe or may not be a viable solution but elaboration on below will help the community in suggesting the approach , if any.
1. "The students are "technically" submitting the form each time of course, I just have another view that lets them re-edit the answers and they normally add new data to new columns instead of editing old data." - Does this mean they revisit the previously filled fields several times? In that case , could you update , how they will be auto advanced to the empty fields if they have to refill the previously filled fields with more information. Also could you mention what you mean by "another view"
2. Is there any specific indicator /detection logic that the user can consider for a field as complete and closed? This will probably help in making the visitors to not revisit the completed fields.
3. Are there serial numbers for these fields and are you using any tabs in the forms.
4. "fill out as the information you first see in the form is almost always the oldest and least relevant." Any specific reason you mention so?
1. "The students are "technically" submitting the form each time of course, I just have another view that lets them re-edit the answers and they normally add new data to new columns instead of editing old data." - Does this mean they revisit the previously filled fields several times? In that case , could you update , how they will be auto advanced to the empty fields if they have to refill the previously filled fields with more information. Also could you mention what you mean by "another view"
They can update the old information but really only if they realize it's incorrect. Otherwise they're always moving to the next fields.
In terms of the "another view" - it's mostly unrelated. The "another view" is how they get into the form. The way they get to the form is from this view where it has a cell with an edit button. Tapping the edit button brings them to the form with their previous responses.
2. Is there any specific indicator /detection logic that the user can consider for a field as complete and closed? This will probably help in making the visitors to not revisit the completed fields. Yes, if it has any value then they've previously saved it and we can skip it going forward. However if they realized they accidentally put in incorrect information then I'd want them to have the ability to go back and fill correct it.
3. Are there serial numbers for these fields and are you using any tabs in the forms. No but I suppose I could add some if that would help?
4. "fill out as the information you first see in the form is almost always the oldest and least relevant." Any specific reason you mention so? They fill out the form from start to finish so in week 5 they're scrolling to the bottom of everything instead of just starting on the field they need to fill out.
Thank you for all the details. Since the user may need to revisit the questions , please explore the approach shown in the video below.
Assuming each user has her/his own record to fill in the form, you could add an enumlist button at the top of each form tab as shown in the video below. When the user selects the respective question number you can either show or hide that question using Show_If property of that field based on enumlist selection.
https://www.loom.com/share/6cd8db7e4011424eae4e3a00e6451701
In the first 5 questions in "First Page" the show if expression is IN("1",[QSelect]) for Q1 and so on.
In the next 5 questions in "Second Page", the show if expression is NOT(IN("6",[QSelect2])) for Q6 and so on.
@wtsheetuser wrote:What would make it nice is if the user was auto-advanced to the next empty field in the form.
Is that possible in AppSheets?
No way to advance to first unfilled field. However, since the Form is for answering the fields and you are allowing editing of previous answers somewhere else, when a field is answered, then hide it - on this Form only. When the student accesses the Form next time they see the first UNANSWERED field at the top.
So I thought this would work so I marked it as a success but then I realized that showing or hiding the column is global or in the "data" section. So if I have a SHOW expression of isBlank(_This) then it'll hide it for both forms. And I can't import the table twice and have different show equations so I don't think this method works. If you disagree then I'd love to see it because the other answer does technically work but it's going to be much more time consuming to do.
I had suggested adding an enumlist column and associated show_if expressions with some thought after asking your setup. If believe if you wish flexibility or hiding/showing the columns, you will need to add that extra bit of suggested functionality.
You can use the CONTEXT() function to hide the fields on THAT Form only:
CONTEXT("View") = "Form View Name Here"
AH that's exactly what I needed. Ok I'm likely going to use that going forward.
@Suvrutt_Gurjar I actually went forward with a method very similar to the one you suggested by creating a column in my spreadsheet called "showing" and then having a button set that value to "All" or "Limited" when they go into the form. Then I updated every column to be this:
OR(ISBLANK([_THIS]),[Showing]="All")
I might go the context route so that I'm not making arbitrary spreadsheet changes but I only got to this solution with both of your help. Thank you both!!
User | Count |
---|---|
18 | |
13 | |
8 | |
4 | |
2 |