With actions now in place, I’ve been toying with an app in beta just to see what will work. I’m trying to create a booking app for creatives, with all the complexities that come with it (marking days as unavailable, blocking off times).
What I currently have seems to work - but I feel like it only works for certain time frames (specifically up to 120 minutes for an appointment. I don’t think Glide is smart enough yet to understand how to block out certain time frames based on what’s been scheduled. What’s below was achieved by assigning every time block of 15-minute intervals a decimal value, calculating times before and after those times in MATH columns (15 minutes before, after, etc.), then creating a custom action to populate an array in a different sheet. The time slots presented are then filtered by an IFTHEN column based on a relation to check if the times for that specific date are available.
My question is - how the heck would you approach building functionality to allow users to block off a chunk of time? For example, I am available from 10am - 3pm one day, then only available from 9am - 12pm the next, etc.
Regarding the blocking approach, I was using the same method for my inventory booking app and well it does take a lot of effort and a lot of columns to achieve what I want.
I take it here you are looking for a way to block out unavailable times. Let’s say you’re available 10am - 3pm then what shows on screen should be filtered so that 0am - 10am and 3pm - 0am would not show? And you want it to change based on each day’s schedule?
Thank you! And yes that’s exactly right. I have it so that once an appointment is booked, that time no longer shows, but also any other times that conflict (slots that start in between the time during the appointment and times that start or end less than 15 min the end of that selected appointment).
I’m working on similar logic in my new Time Sheet template. I’ve got it working now where a user picks a start and end time (15 minute intervals between them). The list of possible times (for future entries) is then filtered so that the chosen times between the two times are no longer available as choices.
I’ve configured it in such a way that allows users to submit up to 5 different time sheets per day. The logic is also smart enough to know if I book from 9AM-11AM, all those choices are filtered out AND if I were to pick 8AM as my next start time, the only available end time options are 8:15, 8:30 and 8:45 (even though technically 11:15 onwards are also still available).
Nice! Do you have a screenshot or demo? I’m trying to picture if what you have is similar to what I need to configure in mine. The logic for selecting and removing slots already booked is there. But the ability for a shop owner to suddenly say “Oh I need to run an errand - let me block my calendar from 2pm - 3pm” is not.
It was super complicated to be honest. Basically, I’d pull in the user’s first, second, third, fourth and fifth submissions per day and run an IFTHEN on each of them to check if they’re before/after the “selected time” (the new one that’s looking to be booked).
My times are predetermined choice components, and so are my dates (though they’re filtered by pay period so the list is only ever 14 days long).
I’m hoping to finish the template this week, so I may be able to show a video of it working by early next week.
And @kyleheney I bet. The amount of columns in my sheet is monstrous.
Here’s a screenshot. It sounds like we’ve done something similar. It seems like making some predetermined choices even for blocking off times may be the best route. Like “half-day” or chunks to create the math in the columns and build the logic for Glide to follow.
Thanks, I look forward to seeing your finished product!
Haha at one point I had created 104 computed columns to get all the 15 minute intervals between two times (up to 12 hour apart). It worked, but the app was so slow to respond it wasnt usable. The filtering by before/after a new time is way more efficient.
The filter for before/after a time works well for blocking times when the shop is open or closed. I didn’t continue that logic for the appointment booking because if one user books from 11am to 12pm, it doesn’t necessarily mean all earlier times are not available (ex. 9am - 10am). Or perhaps another user comes and books from 3:00pm - 4:30pm, then all appointments prior to 4:30 are unavailable - right?
If you did the before/after approach aren’t you omitting earlier pockets of time that are available?
That’s where it gets more complicated, but I figured out some logic to allow booking times before already chosen times too, and still filter out previously booked times.
I look at it now and I can’t even understand how I figured it out haha
That’s the part I already have down LOL. The part I need is blocking a free range of time out.
I’ll be interested to see how you worked through yours - I have a feeling our approaches are extremely similar
And ditto - I tell myself that I need to write down the purpose of each column as I work, but 45 minutes and 50 new columns later I have no idea what I’ve done
I know it’s an old topic but I wonder if you could improve your logic and APP or gave up?
I created my own version for these kind of APPs and I could simplify the logic and amount of columns. Of course, I used JS code through some Experimental Code columns to get it.
Try to do it using the Glide’s conventional tools is a nightmare and a mountain of work. I can understand @ThinhDinh perfectly when he stated “… if someone asks me to build that thing again I would never say yes” .
I basically worked with arrays, put all dates into arrays, sorted them, filtered and looked for those available days/hours using my arrays via JS code and I can say that my APPs are not monsters difficult to maintain or improve (my big concern when I develop an APP or project).
I included a section where you can set up your attendance parameters and control which days/hours you are available to accept a booking. I know there are more cases or settings to handle the non-workings days but I think I have covered 80-90% of cases.
Thanks for sharing your approach! I’m sure it will help a lot of Gliders to see different methods to create a booking app.
My team and I at Riegel Groupe figured out the time block issue not too long after I posted this - I’d have to look back to see exactly what we did since it was a while ago. In a nutshell we allowed the shop owner to block off the times they are unavailable and created a formula that was smart enough to remove those time blocks from the availability that was shown to the client scheduling their appointment.