Cerate an appointment module

I am trying to cerate an appointment module where the visitor would:

  1. Select a Person / service etc. … (Choice Component – Multiple List)
  2. Select a Month (Choice Component)
  3. Select a day based on a choice made within the “Month Choice Component”. The populated days need to be available days to book excluding the predefined weekends
  4. Time a time based on the “Select Day Choice Component”. The populated times need to be the available times to book within that date and within the pre-defined working hours.
  5. Reserve that date.
  6. Send a SMS / Email confirming the booking

I’ve been trying to work it out within google sheets but in vain.
Is there a way to do it in Glide? Can the Date/time Component handle this matter?
Need your help, Thanks

Last I checked there are no “cascading” Choice component abilities in Glide. Meaning that on the same entry screen you can’t have a choice component that links to another one that would somehow filter the selections available based on what has been selected on the other choice component. So that is a show stopper for the method you are trying.
I know the Glide team is working on an update of the choice component but I don’t know what features will be added.

I attempted something like this awhile back in https://g13gu.glideapp.io/. I got hung up though because the sheet started to get exponentially huge. Also the Multi-Level Select example in https://concepts.glideapp.io/ is a similar approach, but much simpler because there aren’t multiple months/days involved. May those will give you some ideas on a different approach. I think the problem with choice components in a form, is you can’t reestablish the list of items using relations because the data would first have to be submitted back to the form. You could possibly do it on a detail view screen first, then use the form button to pull in the selected choice values, but the detail view would have to have a row for each user. There is a new column value in staging that I hope would resolve this.

Thanks Jeff! The provided sample apps got me to think of approaching the issue from a different angle. What if an Interim/temp holding sheet is created and gets populated with the available dates over 2 weeks period using the following formula

> ={"TwoWeeks_ScheduleFromToday";ARRAYFORMULA(TEXT(ROW(INDIRECT("F"&DATEVALUE(Today())&":F"&DATEVALUE(today()+14))), "ddd dd/mm/yyyy"))}.

Thus, Temp sheet gets repopulated / updated every time a new reservation is made. The interim/temp sheet is used to populate the Date & hour choice component.
I attempted to create the temp sheet but did not figure out how to.
Do you that the idea is doable.

That’s an interesting formula. I haven’t seen anything like that before, but it seems to work. I did find a bit simpler way to do the formula. I created a sheet called Dates Example on the spreadsheet for your directory project. The first column would be a list of dates for assigned timeslots and would most likely be found in an appointments sheet. The second column is the list of dates going out 2 weeks. The third column builds a True/False if the date from the second column is found in the first column (date in appointments sheet). You can use a filter on a choice component to only display dates where the the true/false value is false. Once an appointment is made, then that date would be removed from the list. Hope that helps.

Thanks @Jeff_Hager, it worked out well. On the other hand, I have not been able to figure out, for the last couple of days, how to:

  1. Show all reservations for the current date range
  2. Filter by date

when user attempts to access these two options from the barber screen. The app link is https://zawia.glideapp.io

Again, thanks for the help

Using the attached example, you could use column B for your list of dates in a choice component, then once a date is selected, use a filter to filter times on True/False availability and Selected Date.

Unfortunately you may have to set up these formulas for each individual barber. Otherwise the transpose formula gets too large for google sheets to handle since with only 5 barbers, you would have a combination of 1960 available reservations over a 2 week period.

1 Like