Jul 09, 2021 11:29 PM
I use Airtable forms where users book timeslots. When a record enters a view, I like to send the users a calender invite. This works fine when they book 5 events, but the 6th will fail because of the error “Calender usage limits exceeded”. I contacted Google, but they say I have not reached my quota (by far). Looking for a solution!
Jul 10, 2021 11:09 AM
Welcome to the community, @Matthijs_Collard! :grinning_face_with_big_eyes: I haven’t used the Google Calendar automation actions myself, but my experience with other APIs says that you may be making too many requests within a given period of time. Many APIs have rate thresholds that are separate from monthly quotas; e.g. you can’t make more than X requests per minute, or perhaps even per second. Because the automation action is making the requests for you, it’s tough to know if each
Create event action is a single request or if it involves multiple API calls. In the end, you’ll probably need to find some way of delaying the requests so that they don’t all happen so close to each other.
Could you explain your automation setup in a bit more detail? Are users picking events in a batch—like premade groups of 5 or 6 events—or are they signing up for them individually?
Jul 10, 2021 11:47 AM
Thanks Justin. Ok, so this is how it works.
I have two tables. One with timeslots and one with booked lessons (it if for a flight school www.eflight.nl). Students get an Airtable form to book lessons and they select one or more timeslots.
When the form is submitted, the timeslots that are booked in the Timeslot table will enter another view. I run an automation whenever a record enters the view and I create a google calender event based on the timeslot and the student data. All quite straightforward.
If a students books six lessons, then the sixth will give the error message. I have to wait for one hour to rerun the automation.
Jul 24, 2021 12:23 PM
Sorry for the delayed reply. It sounds like Google is throttling the number of events that can be made at a time. Like I said above, it’s not an issue with your quota (i.e. the total number of events on your account), but more likely an issue with exceeding their API’s request rate/frequency. Finding a way to spread out those requests would probably work, but I’m not sure how to pull that off…yet.
When a student requests a series of timeslots, how are the new records created? Is it via another Airtable automation, or some other way? I’m struggling to think of a way to delay the calendar event creation when all records are added at once, so now I’m trying to think of a way to spread out the record creation process itself. In other words, instead of making six records at the same time, find a way to add a delay of even a second or two between records. It’s tough to know if that short of a delay would keep the Googlemonster from complaining, or if it would need to be longer, but that’s the direction that I’m thinking for now.
Jul 24, 2021 10:47 PM
The slots are created with an Airtable form that I send out to students. They can book any available timeslot. As many as they want, but normally they will book 1 to 12 slots. I have no idea how to throttle this. I don’t want students to fill in the form 12 times. Airtable support told me to use the calendar sync function instead of automation, but I doubt that is what I need.
Jul 25, 2021 09:35 AM
Correct. That type of syncing works the other way, syncing an existing Google calendar with your base.
Thanks for the clarification. I somehow got confused and thought that you were creating new records somewhere (like via an automation), but you’re just linking to records, and those linked records then appear in the view that triggers the automation. I agree that forcing students to fill out the form more than once puts an unnecessary burden on them, but I don’t think that we need to go that route.
The easiest way that I can think of to spread out the calls to Google would be to effectively daisy-chain automations using webhooks. Each automation would make a single Google Calendar event, then use a scripting action to introduce a delay before either triggering the next automation in line or ending if there’s nothing more to do. Scripting actions require that your base be in a Pro plan workspace, so I’m not sure if this would be a viable option. It would also take a bit of R&D time to develop and test the process, so there would be a fee involved. If you have a budget to make this happen, PM me and we can talk details.