Hi Community and TIA.
TL;DR question: ways to ensure duplicate events aren’t created in Gcal based on user error updating or reformatting Gsheet
I’ve included screen shots of the Zap and the Sheet Tabs referenced. Leaving out screenshots of the actual tabs/sheets as they contain guest information.
I have a long working Zap to manage short-term rental bookings that adds departure and arrival events to GCal based on new/updated rows in a Gsheet (GSheet is “Contact Info). The trigger is Col 5 where the arrival date is stored. The vast majority of use cases are for new bookings, which function as expected. The only real problem I run into is when I either:
- update an arrival date in the Gsheet to reflect a new arrival date
- rearrange the sheet (Filter View or re-sort)
Obviously, the easy answer is to turn off the Zap when doing so but that relies on human activity and is therefore subject to human error. (This Zap also creates arrival and departure emails but, since that’s a separate function, I’m not as concerned, but it’s also creates a duplicate draft email for departure and arrival). If I just mess with a date in one row, it’s not of great consequence but when I re-sort or Filter View or make global changes to the sheet, I get duplicate events and emails for every single row which can be time consuming to remove and only gets more time consuming as the year goes on
With all of the additional functionality now available to small-time users like me (Thanks Zapier for Filters and Paths!), I’m re-thinking all of my architecture and trying to eliminate human error (hahahahah) from the equation. Looking for error-proofing solutions that are better than what I’ve come up with.
- My desired original solution was to add a Filter immediately after the first step that would check to see if the GCal event already existed and, if so, either modify the event (event date has changed in Col5 from existing GCal event) or cancel (event date matches the Col5) any further actions. However, I can’t figure out if it’s even possible to use GCal as a trigger for that since the original zap begins with “New/Updated Row In Sheet”. It only seems to want to check the data from the original trigger and not from other sources. If anyone can confirm this is possible/not possible, or suggest a workaround, that would be helpful.
- A secondary solution I thought about was creating a separate zap to check GCal for an event matching the departure date and/or perhaps another piece of confirming information (guest name? email?) and checking a True/False checkbox at the end of that sheet row. Then I could add a Filter function on the original zap that would look to that checkbox for False (e.g. not already created) before creating a new one and/or modifying original if I could figure out how to finagle that. At a minimum, a “True” result (separate Zap has verified this event has been created) should prevent the rest of the zap from creating duplicates, right?
- I also thought about having the Filter reference the dates in the “Form Responses” Tab where the same info is stored. If the date matches, the Form Response tab then nothing happens. If the date doesn’t, it would create a new event (or modify the original, if I can figure out how). That would only work for updating dates in “Contact Info” sheet though and I’m not sure how it would create new GCal events as it will already match. I might have to make that a totally new Zap (New Row at at bottom of sheet trigger) in order to isolate Updated from New events?
- I copy and paste the Unique ID from the “Timestamp” (Col1) on that tab into the “Booking ID” (Col 1) on the “Contact Info” tab as the trigger action for the whole zap. (Clarifying info, Mailparser.io strips almost all of the necessary information from AirBnB and VRBO inbound emails and populates the Form Responses tab except for independent bookings. They don’t paste email or - for AirBnB - phone numbers into the Form Response tab so I manually add those and then trigger the Zap run by the copy and paste into the Contact Info. That’s probably TMI but may be helpful for someone who thinks there’s a better way to do the whole process.
- Other methods I’m not considering?
To try and summarize what actions I want to occur, for clarity:
- New GSheet Row with Arrival Date (Col 5 in “Contact Info”) event triggers Departure and Arrival events in GCal only if events do not already exist. AND
- Updated Arrival Date Sheet Row (change to Col 5 in “Contact Info”) creates New GCal Arrival event (or modifies existing?) but does not create or modify any other events.
Separately, none of this addresses changes to departure dates (which also happens) but I figure I can do that with a duplicate Zap targeting Col6 (End date) instead of Col 5 (Start date) or possibly with more conditional logic looking for a change to Col5 OR Col6, depending on the solutions you guys come up with. Sorry for exchanging brevity for (hopefully) clarity.