Automators Podcast, episode 58

I was extremely pleased to be on episode 58 of the Automators podcast on Relay.fm.

This was my first time on Automators, which is a show that I have really enjoyed since it first began.

I’m guessing anyone who has managed to still find and read my site probably knows this already, but I’ve also been on a few episodes of Mac Power Users too:

Links and Show Notes

Here are the show notes for Automators 58:

Shortcut: Due Schedule Call

(A note to the reader: although it has been updated and re-posted on March 21, 2020, this was originally written in October 2018.)

Here’s a scenario that you might relate to: I’ll often think to myself, “Oh, I just remembered that I call someone, but I can’t call them right now.” Here are some examples:

  • I need to call to arrange some type of service (plumber, electrician, car shop, etc) but it’s after they are closed for the day.
  • I need to call a friend or family member, but it’s during the day when they are probably working, so I need to call them in the evening.
  • I meant to call someone earlier, but forgot, and it’s too late in the day to call them now.

Or I might want to make sure that I call someone at a specific time:

  • I need to call the car repair shop as soon as they open tomorrow.
  • I want to call Mom on Tuesday night before she leaves on Wednesday.

Et cetera.

Here’s the problem. Well, one of the problems.

If I can’t do it now, I need to set some kind of reminder to do it later.

If the time comes for me to call and I’m distracted, tired, busy, or otherwise occupied, I might not actually make the call when the time comes, so I need my Current Self to make this as easy as possible for my Future Self.

In the past, what I have done is added a note in Due which would say something like “Call AppleCare” and then set the time/date when I want to be reminded.

(If you haven’t used Due, one of the things everyone loves about it is that it will keep reminding you to do something until you actually do it. You can have the reminders repeat every minute, every 5, 15, 30, etc. It’s the most-reliable way to get yourself to do something at a specific time or close to it.)

The problem with my method has always been that the reminder would do off, and then I’d have to do to the phone app, look up the person I wanted to call, and then select the phone number. Sometimes I would realize that I didn’t have the number that I needed to call, and wondering if I had the number that I needed to call always made me dread when a reminder came up to make a call.

It’s that little bit of friction that doesn’t seem like much, but often made me resistant to actually Do The Thing I needed to do when the reminder goes off. It has also happened that I’ve dismissed the reminder, and then been distracted before I actually made the call, either because I didn’t have the number, or something similar.

Now I realize that when you see it written down, it seems silly, and maybe it is, but I’m being honest: even that little bit of “friction” in the process made it much less likely that the call was going to get made, and even when I did it, it always seemed like a bit of a hassle. One of the things I most appreciated about David Allen’s Getting Things Done book was when he talked about being lazy and therefore wanting to make things as easy as he could. He devised the whole system to make it so that when it came time to doing things, he had removed as much friction as possible.

Then I learned that Due has a built-in feature which makes this easier.

I’m sure this is mentioned in the documentation somewhere, but I stumbled across it by accident.

I set a reminder in Due, but this time I added the phone number of the person I needed to call as part of the reminder text. When the reminder alert went off and I went to dismiss it, Due automatically prompted me to call the number.

My eyes grew very wide.

“So you’re telling me that if I put the phone number into Due along with the reminder, then Due will recognize that it’s a phone number and offer to dial the phone for me?”

This is a lazy-person’s dream. Having the number right there means the friction has been removed. I can dismiss the reminder and make the call in one step! And if I realize that I don’t have the number now when I’m thinking about making the call later I can look up the number as my leisure so that I am 100% sure that I’ll have it when I need it.

“This is awesome!” I thought.

But only for a moment. Because brains are terrible, at least mine is, and so the first thing it said to me is: “You do realize that this means that you need to go to the Contacts app, find the person, select their phone number, copy the phone number, and then paste the phone number into Due, right?”

Yeah, I know it seems like that’s not a big deal, but my brain is a jerk and he knows exactly how to push my buttons.

And just like that, there was friction again. It had just from “Doing The Thing” to “Setting The Reminder” which meant now I was subtly resistant to even making the reminder to do the thing that I needed to do.

(Look, I’m not proud that I’m like this, I’m just telling you how I actually am.)

Complication #2: Google Voice

There was actually a bigger complication: most of the calls that I make are not made with via the iOS Phone.app, but with Google Voice.

I use Google Voice for all of my calls related to my “day-job”, and I need/want to use Google Voice for those calls because then the caller-ID will show the phone number that work-related people have for me, instead of my actual iPhone number.

So there’s another piece of friction.

If only there was some way to make this easier…

Cue “Shortcuts”

As most of the people who are reading this probably know, Apple just introduced an app called “Shortcuts” which is basically version 2 of an app which was previously not-by-Apple. Version 1 of the app was called “Workflow”.

I never really used Workflow much. Although Apple had approved it and let it into the App Store, I was certain that Apple would eventually kick it out of the App Store, and then I would be sad if I had built a bunch of things with it.

Well, as it turns out, not only was I wrong, but I was wrong in about as big of a way as possible. Instead of kicking Workflow out of the App Store, Apple bought Workflow, and renamed it “Shortcuts”. In iOS 13, Shortcuts was released as part of iOS itself, instead of a separate app that needed to be downloaded and installed.

Once Shortcuts became an official Apple app, I decided to start using it. But this was the first time that I had a problem that I really wanted to solve with automation on the iPhone:

“How can I make it easier to schedule calls on my iPhone?”

I was poking around in Shortcuts when I realized that I could send the name and phone number of a contact to Due fairly easily.

All I had to do was choose the person from my Contacts.app, and the shortcut could automatically copy the name and phone number, and sent both pieces of information to Due. Then all I had to do was pick a date/time for the reminder.

But what about Google Voice? Unfortunately the official Google Voice app doesn’t support Shortcuts (yet?), but there is another iPhone app for Google Voice called GV Connect which has an URL scheme (for the nerds in the audience, GV Connect supports “x-callback-url”), meaning that I can use it with Shortcuts.

“Due Schedule Call”

Putting all of this together, I made my first real Shortcut, which had 3 (or possibly 4) steps.

  1. Select a contact from my contacts list
  2. If the contact has more than one phone number, it will prompt you to choose which one to use.
  3. Next it will ask if you want to use Google Voice or the regular Phone app
  4. Finally it will send that information to Due, so you can set a time/date for the reminder.

Step #2 was the last piece that I figured out. If I didn’t have some way to choose a phone number, I was either left with the option of sending all of the phone numbers to Due (which was a terrible idea) or just automatically picking the first one (which wasn’t a great idea, although better than the previous alternative).

After that, the real magic happens between steps 3 and 4, and it happens completely in the background.

If I choose the Phone.app, the shortcut just sends the name and number to Due. But, if I choose Google Voice, the shortcut reformats the phone number into the proper syntax for GV Connect, and includes it in the text that is sent to Due.

By front-loading all of the decisions into the first part of the process (making the reminder), I have made it easier for my Future Self to actually make the phone call. It’s easier than it has ever been.

When I “check off” the reminder, Due will let me trigger the call with almost zero effort.

For the first time ever it is just as easy for me to use Google Voice as it is to use the built-in Phone app!1

See For Yourself

I made a short (about 1 minute) screencast of this shortcut in action.

In it, I setup 2 reminders:

  1. I selected a contact named “Apple” (which has multiple phone numbers) and scheduled a call to be made with the Phone app.

  2. I selected a contact named “AppleCare” (which only has 1 phone number) and scheduled a call to be made via GV Connect.

You can see it here:

(Be sure to make it full-screen so you can see things more easily.)

You can get the shortcut here.

Thanks

Thanks to Andreas Amann, GV Connect’s developer, who helped improve this shortcut.

Thanks also to Raymond Velasquez who helped me solve another part of the puzzle via a post on the forum for the Automators podcast, which is a great place to get automation help for iOS or Mac.

Side note: if you aren’t listening to Automators with Rose Orchard and David Sparks, you really should be.

Update 2018-10-13

It occurs to me that this shortcut might be useful to more people if I offered a variant without the Google Voice portion. After all, if you don’t use Google Voice, there’s no sense in having to choose the phone app each time this shortcut runs.

So I made a version without Google Voice. You can find it here:

Due Schedule Call (without Google Voice)


  1. In fact, it’s actually one less tap to use Google Voice rather than the regular phone app, because when you use the Phone app, Due offers to let you call or message the phone number, whereas with GV Connect I can specify that I want to make a call, not send an SMS. 

Using Keyboard Maestro to make the Home.app Less Terrible

The Home.app on Mac is, frankly, not very good.

It was originally released as an example of iOS apps coming to the Mac, and when it first came out, pretty much everyone said “Well, sure, it’s not very good, but it’s better than nothing… and surely Apple will improve on it over time.”

That has not happened (yet?) and the app remains mostly terrible. For example, it is completely missing some HomeKit accessories which appear in the iPhone/iPad.

In our living room we have 9 overhead lights which I grouped together as “one light” in the Home.app on the iPhone… but for some reason they continue to appear as 9 individual lights in the Home.app on the Mac. I grouped them together on the Mac Home.app, and later they appeared un-grouped again. Why? Who’s to say?

Oh, and some of my Home.app scenes just don’t appear on the Mac. Why? Who knows? How do I fit it? Who knows? The only thing I can do is uncheck the box for “Home” in System Preferences under iCloud, wait for the Home.app to empty out, and then check the box again to re-enable it.

Screenshot of System Preferences, iCloud, Home

That did work to get the Home.app to recognize some new accessories, but it did not help the missing “scenes” appear. Which, I guess, is better than nothing.

(You’ll notice that “It’s better than nothing” is effectively the slogan of most of these iOS-apps-on-the-Mac, at least so far.)

Home.app Automation

The Home.app is mostly impervious to attempts to automate it on the Mac. There is absolutely zero AppleScript support, and keyboard shortcuts are limited to switching between the “Home”, “Rooms”, and “Automation” tabs in the main window.

(That “Automation” tab is identical to what you see on iOS, where you can set timers and triggers. That automation is pretty good, but if you want to assign a keyboard shortcut to setting a Home.app scene or even turning an accessory on/off, well, you are out of luck.)

One minimal piece of functionality that the app has is that each of your “rooms” are available under the “View” menu and via an icon on the Home.app toolbar.

Screenshot of Home.app's "View" menu

I have often wished for a way to go to a specific room via a keyboard shortcut, and today I finally made that happen using one of the best apps on macOS: Keyboard Maestro.

It’s a relatively straight-forward macro, but I thought I’d walk through it as an intro to folks who may want to learn more about Keyboard Maestro.

Create a “Macro Group” for the Home.app

Screenshot of Keyboard Maestro - create macro group

Click the + icon in the first column of Keyboard Maestro’s Editor window to create a new “Macro Group” (think of it like a folder). Then, in the third (main) section, set “Available in these applications” to the Home app using the dropdown. This will restrict the macros in that Macro Group to only being active when you are using the Home.app. Note that I called mine “» Home.app” but you could call it anything you want. I use the » prefix before all of my Macro Groups that are specific to an app to help keep them sorted together.

(That process of setting a Macro Group to only work in one app is a handy feature of Keyboard Maestro that you will probably use a lot.)

Create a Macro for each room

Screenshot of Keyboard Maestro - create macro

  1. Click the + icon in the middle column to create a new macro inside the “Home.app” macro group.

  2. The Macro Name (shown here as “Ethan’s Room”) can be anything you want. You could call it “Bedroom 3” or “Purple Monster”. Whatever name you give it will be what is shown in the middle column.

  3. Assign a “hot key” which is Keyboard Maestro’s name for a keyboard shortcut. Notice that I have assigned two hot keys: ⌥E and ⌥S.

    Keyboard Maestro will let you create as many of these as you want (which is especially nice if you don’t always remember what keyboard shortcut you used — if you think it might be one or the other, use both!)

    However, in this case, I am going to assign at least two keyboard shortcuts to each room, and one of them will always be ⌥S (I will explain why in a moment).

  4. Click “New Action” and choose “Select or Show a Menu Item” (not shown in screenshot) to tell Keyboard Maestro that you want it to use that keyboard shortcut to match a menu item. The top level title is “View” (that is what appears in the menu bar) and the menu item is the name of the room. (Note: in this step, you do have to be exact and match precisely what the menu item says, so be careful.

Repeat the previous 4 steps for each room

I’m not going to show them all to you, but here’s the next one for the Front Door.

Screenshot of Keyboard Maestro, Macros, Front Door

Notice that the first “hot key” is unique ⌥F but the second is the repeated ⌥S.

The same is true for Garage, Hallway, Tj’s Room, Living Room, Office, and Tracey’s Room.

In the middle column you can see the hot keys which have been assigned to each macro. If more than one hot key is assigned, only the first will be shown, so make sure that is that unique one.

(Yes, I will explain why I added those bracketed letters to Tj’s Room and Tracey’s room.)

Q: “Why did you assign the same hot key for each room? Obviously that isn’t going to work right… Right?”

Well, it depends what you mean by “work right” I suppose.

Normally, if you had two identical keyboard shortcuts in an app, you would expect that when you use that keyboard shortcut, nothing will happen, except maybe the system beep will go off.

Keyboard Maestro is smarter than that. If you assign the same keyboard shortcut (or “hot key” in Keyboard Maestro parlance) when you press that keyboard shortcut, Keyboard Maestro will show you what is called the “Conflict Palette”.

The “Conflict Palette” is a little pop-up window which will appear and look something like this:

Screenshot of Keyboard Maestro's Conflict Palette

Note that at the top of the window it shows ⌥S so you will know what hot key caused the conflict. Then there is a list of each macro that has that hot key assigned to it.

Also note that the first letter of each macro name is in grey. When the “Conflict Palette” appears, you can press the corresponding letter to choose that macro, so H for “Hallway” for example.

You’ll note that that last two both start with the letter T. If you press the letter T when this “Conflict Palette” appears, it will then show you only those two items:

Screenshot of Keyboard Maestro's Smaller Conflict Palette

Now it shows the first unique letter to each macro: in this case it’s either J or R. So if I wanted to go to Tracey’s Room, I could press ⌥S then press T then press R.

However, if you look at the Keyboard Maestro Editor screenshot above, you can see that I have also assigned ⌥R and ⌥J to those rooms, so I can go to them directly by pressing those respective keys. You will note that I added [J] and [R] to the macro names to help me remember which keyboard shortcut to use to go directly to those rooms.

(It is not shown here, but I also assigned the hot key ⌥T to both of them, so if I press that it will bring up the second “Conflict Palette” showing just those two rooms.)

This intentional use of the “Conflict Palette” can come in very handy when using Keyboard Maestro to create these floating menu items which you can select with your keyboard.

It’s also a way to make the Home.app slightly less terrible.


Short URL for this post https://luo.ma/km-home-app