March 10, 2020 at 8:19 PM by Dr. Drang
During the Snell Talk segment of this week’s episode of Upgrade, Jason Snell said some nice things about a script I wrote several years ago to improve calendar entries for upcoming Southwest Airlines flights. It came up because recently his Hazel setup for triggering the script had stopped working, and he had to make some changes.
Listening to the show, I was reminded that my iOS translation of the script had stopped working and that I’d planned to figure out a solution. I did figure out a solution this afternoon, but it wasn’t anything like what I expected.
To rehash the problem briefly, when you book a flight on Southwest, the website gives you an opportunity to download entries for the flights to your calendar.
If you’re working on a Mac, the calendar entries are downloaded as
.ics files. Double-clicking the files will install them in Calendar. On iOS, the entries go directly into Calendar.
This is nice, but the calendar entries themselves aren’t as useful as they should be. For example, the entry title is always Southwest Airlines Confirmation XXXXXX, where the XXXXXX part is the confirmation number. While it’s nice to have the confirmation number in the title, the rest of it takes up too much space. And the useless information is at the front, so it crowds out the the only part that’s of any value.
A better title would have the flight and confirmation numbers—the most important information—in the title in a compact form that you can always see. Making that change is one part of the script.1
The other part is a Southwest-specific addition. Southwest doesn’t have assigned seats. You choose your seat when you board the plane, and your place in line to board is determined when you check in. Online check-in opens up exactly 24 hours before your scheduled flight time. So to get a good place in line, it behooves you to check in as soon as you can.
Hence the value of adding an alert to the calendar entry. It can fire off shortly before check-in time to remind you to get your Southwest app open and ready.
On the Mac, I have a Python program called
swicsfix that edits the downloaded
.ics files to make them conform to my taste. I’ve used it for years and so has Jason.
A year or two ago, I adapted
swicsfix to run in Pythonista on iOS. It was helpful when I was traveling and didn’t have a Mac handy. But Southwest has seemingly made some changes to its website recently, and the iOS version of
swicsfix is now downloading a weird HTML file instead of the expected
.ics. After looking over the situation, I decided I don’t have the web programming chops to fix it.
Turns out there’s an easier solution: add the default calendar entries that Southwest provides and then fiddle with them using Shortcuts. Strictly speaking, Shortcuts doesn’t allow you to edit a calendar entry in place, but you can extract information from an existing entry, change it around to create a new entry to your liking, and then delete the original.
That’s what SWA Calendar Fix does. That link will download the shortcut. Here’s the code with commentary.
|1||The important thing here is to look into the future for calendar entries whose titles start with “Southwest Airlines Confirmation” because that’s how the “native” entries come from Southwest. I’m not sure why I limited it to the next 30 days.|
|2||Now we’re going to loop through the list of the entries returned by Step 1.|
|3||These three steps get the confirmation number by getting the title…|
|4||… breaking it into words…|
|5||… and taking the last word. We’ll use this later to make the new title.|
|6||We go through the same steps, starting with the location…|
|7||… splitting it into words…|
|8||… and taking the last word. This is the flight number.|
|9||Now we use the flight and confirmation numbers to build the title of the replacement entry. It looks like SW 1234 (XXXXXX).|
|10||We want the replacement entry to be in the same calendar…|
|11||… and to have the same start date/time…|
|12||… and end date/time.|
|13||We create a date/time for the check-in alert that’s one day and 15 minutes before the flight.|
|14||Now we build the replacement entry from all the pieces we’ve collected and assembled. It would be easier to edit the existing entry, but Shortcuts doesn’t provide an action for altering entries other than to remove them entirely.|
|16||Delete the original entries. You’ll be given a chance to cancel the deletion when the shortcut runs.|
swicsfix. And in only 16 steps. I’m beginning to think
swicsfix on the Mac could be replaced with a fairly short JXA script (or AppleScript) that follows the logic of SWA Calendar Fix.
Update Mar 11, 2020 10:09 PM Here’s an improvement to the shortcut.
The redactions in these screenshots blunt my point somewhat, but I think you can still see the improvement. ↩