# Meet with Me: A Booking App that Prevents Conflicts

**URL:** <https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916>\
**Category:** Project Showcase\
**Created:** [March 26, 2020, 8:05pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916 "2020-03-26T20:05:59Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![BlakeACroft](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/blakeacroft/32/2220_2.png) [@BlakeACroft](https://community.glideapps.com/u/BlakeACroft)\
**Post date:** [April 3, 2020, 10:19pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/21 "2020-04-03T22:19:50Z")

</div>

Robert, do you have a way for the app to know conflicts from Google calendar?

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 3, 2020, 11:19pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/22 "2020-04-03T23:19:38Z")

</div>

No, not at this time. Glides going in the right direction with Google Authentication, but until Glide itself can pull user calendar information, I can’t see this happening in the foreseeable future.

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 4, 2020, 12:01am UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/23 "2020-04-04T00:01:09Z")

</div>

You know what…I stand corrected. You could use some sort of Zapier action to import your Google calendar events into your sheet and do a check against that too…issue would be if you changed events in your Google Calendar. You’d need a separate Zapier to recognize event changes. Also, the zapier trigger from the glide app could trigger the other trigger to import from Calendar once you accept the invite resulting in a duplicate event.

So it’s clunky…but possible.

---

<div class="post-metadata">

**Author:** ![Mark](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mark/32/125_2.png) [@Mark](https://community.glideapps.com/u/Mark)\
**Post date:** [April 4, 2020, 12:45am UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/24 "2020-04-04T00:45:02Z")

</div>

This is amazing work!

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 4, 2020, 3:39am UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/25 "2020-04-04T03:39:30Z")

</div>

Had to try this out!

## The Zap:

Here’s the zap that imports to the Response tab of the Google Sheet:

> **[Import Google Calendar → Google Sheets (Glide)](https://zapier.com/shared/27c82cd9889d5724b4dc05e28b92e3a072e3a18c)**
>
> Anytime an event is created in Google Calendar, create spreadsheet row in Google Sheets.

## Proof of concept:

Made a new 30-min Google Calendar Event on 4/6 at 7:00. You can see it generates a new row in the sheet which is recognized by Glide and results in the time slot being unavailable.

 ![ScreenFlow](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/d/dcb8e28743ff7465f73630f0afa1b4d99b5916af.gif)

If you try this out for yourself, make sure you leave the end date\_time tag empty. The sheet fills this in automatically based on the duration. Adding this tag will break the Arrayformula in the sheet.

 ![Screenshot_4_3_20__11_44_PM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/a/a874756997b3edd6c6cabd69a16d3e9c922043da.png)

## The Other Zap:

Here’s the Zap that will delete the item from the Glide app sheet if deleted from the calendar. This one is not instant.

> **[Glide Meet with Me Google Calendar Sync (Delete)](https://zapier.com/shared/d1a641e6d955b8a7a7cf7d69e17bca21479e8606)**
>
> Anytime an event cancelled is created in Google Calendar, lookup spreadsheet row in Google Sheets and delete spreadsheet row in Google Sheets.

Only thing I haven’t figured out is if you edit the event (change date/time). My original Zap created a second row in the sheet with the new information rather than modifying the old one.

---

<div class="post-metadata">

**Author:** ![Daniel\_Lozano](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/daniel_lozano/32/4780_2.png) [@Daniel\_Lozano](https://community.glideapps.com/u/Daniel_Lozano)\
**Post date:** [April 7, 2020, 4:09pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/26 "2020-04-07T16:09:07Z")

</div>

You’re the best, thanks for sharing!

---

<div class="post-metadata">

**Author:** ![Daniel\_Lozano](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/daniel_lozano/32/4780_2.png) [@Daniel\_Lozano](https://community.glideapps.com/u/Daniel_Lozano)\
**Post date:** [April 8, 2020, 3:51pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/27 "2020-04-08T15:51:31Z")

</div>

One question:  
Say User1 booked a meeting at 11:00 am on April 9th, for 1 hour.  
How do you prevent User2 from booking at 10:30 am on April 9th for 1 hour? As of now the app would let User2 to book that time, even though it would interfere with User1’s meeting.

Maybe establish how long the person would like to meet before going to the form?

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 8, 2020, 3:53pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/28 "2020-04-08T15:53:35Z")

</div>

Yep…@Jonathon_Kohn noticed that too and came out with a fix. I plan to edit my template soon!

---

<div class="post-metadata">

**Author:** ![Jonathon\_Kohn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jonathon_kohn/32/8593_2.png) [@Jonathon\_Kohn](https://community.glideapps.com/u/Jonathon_Kohn)\
**Post date:** [April 8, 2020, 5:07pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/29 "2020-04-08T17:07:15Z")

</div>

The fix was moving the duration portion of booking to the first step along with date and time, then using the same duration mechanism during that first step to prevent booking into an existing event. That mechanism is a godsend for me. Thanks to @Robert_Petitto and @Jeff_Hager and the whole Glide community!

---

<div class="post-metadata">

**Author:** ![Daniel\_Lozano](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/daniel_lozano/32/4780_2.png) [@Daniel\_Lozano](https://community.glideapps.com/u/Daniel_Lozano)\
**Post date:** [April 8, 2020, 5:53pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/30 "2020-04-08T17:53:05Z")

</div>

Understood, thanks Robert!

---

<div class="post-metadata">

**Author:** ![kyleheney](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kyleheney/32/41173_2.png) [@kyleheney](https://community.glideapps.com/u/kyleheney)\
**Post date:** [April 8, 2020, 6:36pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/31 "2020-04-08T18:36:17Z")

</div>

Hey @Robert_Petitto have you noticed any issues with your date pickers and the formats that are being sent to the sheet and/or the choice components in your app?

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 8, 2020, 7:59pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/32 "2020-04-08T19:59:06Z")

</div>

Date pickers/pretty dates have been wonky past couple days. Haven’t looked specifically at the Meet with Me app today. I’ll take a look this evening.

---

<div class="post-metadata">

**Author:** ![Jonathon\_Kohn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jonathon_kohn/32/8593_2.png) [@Jonathon\_Kohn](https://community.glideapps.com/u/Jonathon_Kohn)\
**Post date:** [April 8, 2020, 8:22pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/33 "2020-04-08T20:22:28Z")

</div>

Solved it. Im using the Date Time picker now. I verify the chosen start time to be in increments of 30 min by dividing the date time by 30 and formatting for only the seconds BUT the lag is allowing the booking button to appear while it divides… If its not “00” they haven’t chosen the right start time. Durations are in 1 hour increments.

I believe this gives a true date/time to filter but again, I have no way to make the booking button instantly appear or disappear if the time is not #:00 or #:30

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 10, 2020, 7:33am UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/34 "2020-04-10T07:33:01Z")

</div>

Continuing the discussion from [Meet with Me: A Booking App that Prevents Conflicts](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/33):

I reconfigured the app a bit to prevent conflicts prior to existing bookings per @Jonathon_Kohn’s suggestion. However, I wanted it to be a bit more flexible. My version calculates start date/time + duration to see if it’s available. It works, but there’s a lag because Glide does not allow for math columns to calculate dates.

…so it has to be done in the sheet. 😒

If ever Glide allows date calculation…this will be an instant check.

In addition, I added the ability for customization of durations without needing to copy/configure sheet formulas:

 ![ScreenFlow](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/e/e40e92561dcf0ba1e114667277c200c13ff01b1d.gif)

Lastly, the Upcoming Bookings calendar at the bottom of the homepage is now private to non-admins. Only Admins will be allowed to view meeting details for confidentiality. Admins also can customize the images in the booking form/calendar details from within the app.

I was trying to find a way to allows admins to customize durations from within the app, but couldn’t figure it our. Any ideas?

---

<div class="post-metadata">

**Author:** ![Jonathon\_Kohn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jonathon_kohn/32/8593_2.png) [@Jonathon\_Kohn](https://community.glideapps.com/u/Jonathon_Kohn)\
**Post date:** [April 10, 2020, 2:16pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/35 "2020-04-10T14:16:39Z")

</div>

For admin only in app option changes use a sidebar menu/tab and use a list view to add or allow deletion of list items from the duration column.

The instant math check in sheets would be a game changer. I currently use a text warning and table verification to let the booker know to wait 5-10 seconds to verify the information they chose is correct and this allows time for the booking button to appear or not ☹

---

<div class="post-metadata">

**Author:** ![Jonathon\_Kohn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jonathon_kohn/32/8593_2.png) [@Jonathon\_Kohn](https://community.glideapps.com/u/Jonathon_Kohn)\
**Post date:** [April 10, 2020, 2:23pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/36 "2020-04-10T14:23:27Z")

</div>

I just completed my flight scheduler last night.

Using a now()+add() function I populate a column in my options sheet with current date and time in 30 minute intervals from which the users choose a new booking date/time.

Then 2-24 hour duration in 1 hour increments.

Then 1 of 6 aircraft.

And finally 1 of 4 instructors.

144 columns compared against 144 columns and it all works just fine! Again, the math lag is the worst part but fingers crossed these boys come up with a hack!!

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [April 26, 2020, 3:31am UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/37 "2020-04-26T03:31:01Z")

</div>

> [@Robert\_Petitto](#):
>
> My version calculates start date/time + duration to see if it’s available. It works, but there’s a lag because Glide does not allow for math columns to calculate dates.
> 
> …so it has to be done in the sheet. 😒
> 
> If ever Glide allows date calculation…this will be an instant check.

Not yet, eh? Maybe one day…

 ![Screenshot_4_25_20__11_25_PM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/6/67bfbb41bf917266bac6405d49142d62083a1358.png)

On the plus side, I was able to create an integromat integration that allows Google calendar to “sync” with Google Sheets (add, edit and delete Google Sheet rows)

…now if only Glide could connect to integromat directly…one can wish.

---

<div class="post-metadata">

**Author:** ![Lucas\_Pires](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lucas_pires/32/64863_2.png) [@Lucas\_Pires](https://community.glideapps.com/u/Lucas_Pires)\
**Post date:** [April 26, 2020, 6:35am UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/38 "2020-04-26T06:35:25Z")

</div>

Yeah, I’ve already tried too ☹

---

<div class="post-metadata">

**Author:** ![danieltotherescue](https://avatars.discourse-cdn.com/v4/letter/d/b2d939/32.png) [@danieltotherescue](https://community.glideapps.com/u/danieltotherescue)\
**Post date:** [May 17, 2020, 11:21pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/39 "2020-05-17T23:21:18Z")

</div>

Hi Robert! The app looks great. Have you by any chance also incorporated an integration where, once the meeting is scheduled and the zoom call created, a button appears which will launch the newly created zoom call? Or would a different platform serve this purpose more easily?

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [May 17, 2020, 11:34pm UTC](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916/40 "2020-05-17T23:34:09Z")

</div>

Yes, the button will appear if a Zoom call is created. Still working on the logic… still getting false availability when the starting time + duration falls at an available time but isn’t really available.

Eg. 1:00-1:15 is not available. If I schedule a 12:45 for 15, it will let me; for 30, it won’t, but for 45 or 60 it will since 12:45 + 45/60 is 1:30/1:45. Working on the logic where it will let me book for the minimum allowed if it runs up to another event but now allow me book For any of the later durations afterwards.

[Previous page](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916.md?page=1)

[Next page](https://community.glideapps.com/t/meet-with-me-a-booking-app-that-prevents-conflicts/5916.md?page=3)
