Airtable is a rather wonderful tool. It powers the program creation backend process for Kafka Summit and Current. It does, however, have a few frustrating limitations - often where it feels like a feature was built on a Friday afternoon and they didn’t get chance to finish it before knocking off to head to the pub.
The Problem 🔗
One of these limitations is that the .ics
calendar sharing will only use the primary field of the table. Which means that a view that looks nice in Airtable:
will look like crap in your calendar application:
You’d think that the labels configured in the Calendar view:
would apply to the .ics
but apparently not. Airtable support confirmed that the primary field is all that’s shown, and that this is a limitation.
The Solution (kinda) 🔗
This isn’t a perfect solution because it won’t automagically update as new records are added (UPDATE: see note below on how to do this!). However, if you have a static set of records, or are content to do additional manual work when you add any, then it may still be useful for you.
-
Create a new table called
Calendar
(or whatever you want) -
Delete the columns that are created, and rename the primary field to something that represents the record that will be on the calendar. Since I’m using it to represent sessions at a conference I’m going to call it
Session
. -
Add a new field to the table, set it as a Link to another record and select the source table which holds the records you want on the calendar.
When prompted, add the additional fields that you will want to use in the calendar:
-
Start date/time
-
End date/time (optional)
-
All the fields you want to use in the label
You should have a table that looks something like this:
-
-
Now the cludgy bit (and if there’s a way to automate it, please do let me know!). Over in the source table, you’ll see a new column has been added for the link field to your new table (mine’s called
Calendar
and so is the link field)Click on the header of the primary field of your source table to select all the cells, and copy them to the clipboard (Cmd-C on the Mac).
Now click on the header of the new link field and paste from the clipboard (Cmd-V on the Mac).
When you go to your new table you’ll see it populated with records matching those in the source.
-
Now to customise the primary field so that it displays the values that you want it to. Change the field type to Formula and set the formula to a concatenation of the fields required
-
Now the process is as normal - create a Calendar view and set the start/end dates from the lookup fields included in your table:
The calendar will show using the primary field value by default (you don’t need to customise the labels now):
And with the
.ics
share link created… image::/images/2022/09/airtable15.png[.ics share link]…it renders exactly as we want it in our external calendar app:
If you add new records to the source table you need to make sure that the link field has the primary field value set in it, otherwise the Calendar table that we’ve created won’t get an entry for it. |
Update: AirTable’s Support is Awesome 🎉 🔗
How cool is this? I shared my blog with AirTable support and they made a video showing how to close the loop on this and automate adding records to the Calendar table from the main one! Check it out:
Bonus Points: Fixing the Time Zones in Airtable Calendar 🔗
Another hack here, but I honestly can’t make head nor tail of the logic used in the date/time fields and time zones. In the absence of a way to set the time zone, I’ve resorted to creating a derived field in the Calendar
table above and a formula to shift the time as necessary:
DATEADD({Start (from session_link)},5,'hours')
You can then reconfigure the Calendar view to use the new field with the fixed time zone: