in applescript

Scripts updated for OmniFocus 3

OmniFocus 3 gave users a long-awaited feature: the ability to assign a task to multiple contexts. But the transition also came with a nomenclature change: the old contexts now became tags, a change that was reflected both in the UI and the underlying AppleScript dictionary.

Unfortunately, there wasn’t a graceful transition for scripts: OmniFocus 3 doesn’t know what a context is, so older scripts that referred to them needed to be updated to reflect the new world order.

Of course I’ve updated all the scripts that I use with OmniFocus on a daily basis – many of these updates were made when OmniFocus 3 was in beta early last year.

But after receiving a steady trickle of emails from people wondering how to fix some of my OmniFocus AppleScripts (the answer always being some variant of “search for context and replace it with tag), I came to the embarrassing realization that I never actually pushed the updates back to Github.

Sorry, everyone!

I took some time this weekend to update all my scripts on Github. Here’s what’s changed:

  • I took the opportunity to scrape out lots of unnecessary code related to Growl, since 100% of respondents to my Twitter survey (n=3) no longer use Growl. So the scripts are all leaner and cleaner.
  • A couple other minor changes, like cleaning up the text of notifications. For example, the Total Time script used to waste the script headline (“title”) telling you “Script complete”: Now the key information gets top billing:
  • And yes, the scripts are all updated for OmniFocus 3. (Still shaking my head that it took this long for me to notice.)

Paste email link from selected MailMate message(s)

David Sparks posted about a clever idea to instantly link to Apple Mail messages from anywhere:

I’ve always like the way OmniFocus can create links to Apple Mail messages when saving an email as a task…

I’ve now got a script that can do that anywhere via a text expander snippet…

Once you’ve installed it, just type “elink” in any app that can take a URL and you create a link to the currently selected email message. I use it all the time in Notes and Calendar note fields but it really works anywhere.

Here’s an adaptation that works with MailMate and Keyboard Maestro:

Get email link macro

MailMate doesn’t have a ton of AppleScript support, but there is built-in Copy Links to Messages bundle command, and you can execute bundle commands via AppleScript.1

So it was just a matter of stringing together

  1. A typed keystroke trigger (I’m using elink, Spark’s shortcut of choice)
  2. MailMate’s copy command
  3. Paste

For good measure, the final action restores the prior clipboard contents.

Download on the Keyboard Maestro forum

  1. This is why I used Keyboard Maestro instead of TextExpander: TextExpander needs scripts to return a specific value for typing, but the MailMate script is run indirectly, puts the url on the clipboard, and returns empty. With Keyboard Maestro, the next step (pasting the clipboard) is trivial.

Oh s***, I’m a father. (or, On Becoming a Parent)

I was there when she opened her eyes for the first time. Her thick eyelids, once sealed in the womb against amniotic fluid, split slowly: a deep crack revealing dark irises within.

The first rays of light that ever struck her retina first bounced off my face. My face.

I was there because I was in the room for the emergency c-section the doctor ordered when her heartbeat dropped precipitously, disappeared from the monitor altogether, and returned, erratic, a signal of stress from unknown causes.

We were there because hours before, Olivia had awoken with uncontrollable shivering and an alarming fever. A seizure? Probably not. Dengue? No idea. We rushed to the hospital and it all began.

Midway through the surgery, the doctor called to me. I stood up from my station at Olivia’s head and looked down to see a new head sticking out of an abdominal split. It was Iris’s head, and it was covered in a combination of blood and a white substance that made it look extraterrestrial in origin.

It is a strange looking alien head, said my head.

She is my daughter, and she is beautiful, and she is alive!, said my heart, which in that moment expanded ten sizes to accommodate the torrent of feelings rushing though me.

I went with Iris to the natal intensive care unit for monitoring while they put eight layers of stitches into Olivia.

That was just two months ago.

Here is a list of things I felt three months ago:

  • Kids are generally gross and annoying. (I love my nieces and nephews but I’m glad to hand them off to their parents for real life.)
  • I will probably gag every time I have to change a diaper. (This I will do as seldom as possible.)
  • I am in no way ready or qualified to parent another human being. (What do I know about that?)
  • I am not ready to be known as a “parent”. (Being child-free is core to my identity, which includes freedom and youth. A child will mark me as old, responsible, tethered.)
  • Perhaps most important: I resent the pending loss of freedom. (When will I read? When can I go out for coffee or beer, unmolested by the demands of someone infinitely dependent on me for life and health?)

These feelings were strong enough that the prospect of an early delivery was almost paralyzing. I was counting on those extra two weeks. Every day started and ended with a silent scream into my pillow to anyone listening: Don’t you dare rob me of this time. I’m not ready.

But that was then, and this is now. Here is a list of things I now feel:

  • Other kids may be gross and annoying, but my daughter is the most perfect creature alive, and nothing she could do would be repellent.
  • Diapers are merely an opportunity for scoring in the game of “baby tracking”. (We do this on our mobile phones. Play elements include changing diapers, feeding, tracking growth milestones, and more. Push notifications inform me of updates logged by Olivia. The recommended ratio of wet:poopy diapers is cause for celebration: her metabolism is on point, and her digestion is still working. Go baby Iris!)
  • The practice of parenting has a learning curve, yes – but who doesn’t love learning new things? And, mercifully, the curve is shallow: an infant does not possess the capacity to max out my credit card, get arrested, or go on dates – much less roll over – and it seems quite possible to learn as you go.
  • I don’t know anyone (yet) who has written me off for being a parent. But if they do, it’s their loss, not mine. Either we mutually adapt to new life situations or our friendship was never meant to last.
  • The loss of freedom is real. “All joy and no fun” is one way I’ve heard parenting described, and I can see the truth in that. But adventure is still possible: so far we have fought back by putting 26,000 miles and four countries on her passport.

The transformation from reluctant father-to-be to smitten dad was sudden, almost violent. Before the birth, my one consolation was having had observed a similar transition occur with my brother. He, too, had been terrified of becoming a father – and he, too, experienced a point-of-view inversion wherein the source of terror became a source of joy. It was comforting to me to know that such a metamorphosis was possible, and uncanny to experience it firsthand.

How could such a change occur?

According to a recent estimate, one hundred and eight billion humans have lived in the world since humanity’s dawn. One hundred and eight billion people have lived and grown and survived on this pale blue dot we call earth. One of these, Iris, was recently born – and she is the most special and beautiful person I’ve ever laid eyes on.

Is Iris objectively special? Is she objectively beautiful? Setting aside the question of what “objectively” could even mean in this sense, the conclusion I’ve come to is that it simply doesn’t matter. The thing that’s special is in the relationship we have, the unspeakably complex dance of begetting and being born and coexisting as two interconnected beings.

I have spent most of my life as a steadfastly rational person. Emotions are, by definition, irrational and difficult to understand, much less control. So I try to understand. And there are some logical explanations for parental love.

Here’s one: as a concession to the benefits of walking upright and having large brains, human babies need to slip through the birth canal at an earlier stage of development than any other animal, before they possess any practical survival skills. The one thing they have going for them is a bewitching cuteness, which they use to manipulate adults into caring for them. From experience, this rings true.

Here is how I imagine it: fetal Iris is out on a deep-sea fishing expedition, with me as her prey. She sets her line in my path and waits. First ultrasound: I know this means danger, and I will have no part in it. Second ultrasound: That looks a little tasty, but I know better. Third-trimester kicking on Olivia’s belly: Let me just nibble that a bit. And then she comes out and to hell with it— I swallow the hook with abandon and feel its thousand barbs lodge throughout my whole being. It should be painful, I know. But it makes me happier than I have ever been.

More numbers.

Dunbar‘s number says we can only maintain stable social relationships with about 150 people at a time. We just can’t manage many more relationships than this. This says to me that we’re wired to value things on a small scale. In other words, it’s community that matters, not the general population.

And what about the dyad, that most exclusive of relationships? Somehow this, in my baby-addled brain, evokes quantum entanglement. A PhD in physics may be required to understand the phenomenon, and I don’t have one. But I do know that two particles can be directly connected to each other in a meaningful way over vast distances. Does it matter that there are one-hundred thousand quadrillion vigintillion atoms in the universe? Not to the two particles that are entangled with each other. Because they have each other. This is where reason and emotion crescendo together, saying: relationships matter. Relationship-ness is built into the fabric of matter itself! (Do I need more sleep or have I stumbled upon some profound cosmic truth?)

Following the convoluted analogy, I think I’m dangerously close to claiming that Iris has value because I love her, not because she’s objectively special. (What if she weren’t loved? Would she still have value?) I’m also coming close to circular reasoning: I love her because I value her, and I value her because I love her, and I have no control over that because of biological imperatives (or selfish genes, or Iris’s fishing expedition). And yet I don’t care, because this is the deep emotional truth that has embedded itself into my essence with its loving barbs.

When I was about to graduate college, I met with a friend to discuss the transition. I mentioned the comfort that being with Olivia provided me in the face of upcoming uncertainties of life. In retrospect, this strikes me as a sign of embarrassing naïveté: I was twenty one years old at the time, and had only started dating Olivia a couple months prior.

What did I know about life? For that matter, what do I now know about life?

And yet, all these years later, Olivia and I have brought Iris into the world. Quantum entanglement begets quantum entanglement. Biology wins; or, maybe, love or physics wins.

My fears used to be around attachment. Around being linked to another person in a way that would destroy my personal autonomy. Now I have bigger fears.

In honor of Iris’s birth, a friend shared a song from the musical Hamilton. I haven’t seen the musical, but the song, “Dear Theodosia”, expresses a longing for the future that never fails to move me to tears:

You will come of age with our young nation
We’ll bleed and fight for you
We’ll make it right for you
If we lay a strong enough foundation
We’ll pass it on to you
We’ll give the world to you and you’ll blow us all away

We desperately want to build a world worth passing on. And for centuries it’s been assumed that human society is slowly, surely becoming more free, egalitarian, and just. Now I’m not so sure. Fear and tribalism seem alive and well.

The funny thing about tribalism is that it’s based on a noble impulse that simply hasn’t gone far enough. Love of one’s kin and community is a good thing. The trouble is when we define our “tribe” and allow that boundary to mark the end of love and the beginning of fear.

Love is a complicated thing. But if I’ve learned anything over the past couple months, it’s that love – even, or perhaps especially, unexpected love – shatters boundaries, real and perceived.

Looking back at my rapid metamorphosis from reluctant individualist to smitten father, I’m struck at how it represents a radical expansion of my self. A small win for empathy in a world struggling to define the appropriate limits for such a concept.

I know this parenting thing will be difficult. I know I’m in the “honeymoon phase” of being a father, and that the years ahead will be full of challenges and pain. Some of these challenges will be the direct result of stupid and selfish things I do. And some of this pain will be the direct result of stupid and selfish things Iris will do.

And the questions may be even bigger than the challenges. Who is my “tribe” in a world with Iris? Do I hunker down, close in and call it “us against the world”? Or is there a way to let this newfound expansion of love extend into other relationships and interactions? What kind of world will we pass on to Iris and her peers? Oh, and lest we forget: how on earth does one raise a healthy, well-adjusted and empowered child?

I would never claim that parenting is the best way to love. But for me, becoming a parent has forced a new kind of love upon me. Iris’s strongest weapon – literally her only survival mechanism – is fostering connection. And no matter how strongly I fought it, I’m hooked.

“Was that a train?”

On a road trip this week, my wife thought she saw something in passing.

We didn’t think there were any trains in the region. I looked up from my iPad, but whatever it was passed out of sight before I could spot it.

I could have easily bookmarked the spot in Rego or Google Maps, but I wanted to actually be reminded to search for the item on our return journey.

So I did the sensible thing and quickly

  1. Created a tag in OmniFocus and assigned it the location “Here”
  2. Set the tag to alert me of any available tasks on arrival
  3. Created a task to “Look for the train”

Now, on the return journey, OmniFocus would alert when we approached the location in question.

Everything was in place for the perfect train-looking-landmark heist… until we took a different route home. D’oh!

Time to check Google Street View, I thought.

But alas! When I viewed the tag in OmniFocus, its location coordinates had been replaced with the generic road name “Highway 6”.1

Back at my Mac, I was able to dredge up the coordinates using BBEdit to search the OmniFocus database.2

A quick Google Maps search brought me to the spot. I did find a rather disturbing billboard in the vicinity, but no evidence of a train (or train imposter). So the end of the story is that, while it was a fun process, we still have no idea what the landmark actually is.


Props to BBEdit for best-in-class search capability, which didn’t blink at the hundreds of compressed XML files in the OmniFocus database.

And props to the driver, who found a faster way home.


  1. Normally a friendly location name would be more helpful than a latitude and longitude, but in this case it left me with little to go on.

  2. Open the OmniFocus database in BBEdit, then use Multi-File search. Be sure to enable the “Search compressed files” option, which will traverse the OmniFocus database’s compressed XML documents. This quickly landed me at <location name="National Highway 6&#10;Cambodia" latitude="12.3435" longitude="105.101" notificationFlags="1"/>

$99/month is a steal for CloudApp for iMobile

2017-11-30 The app has been removed from the App Store. For posterity, here’s the CloudApp for iMobile entry on AppShopper.

2017-11-29 Updated with the full “feature list” from the home screen

While browsing for an iOS-native service like Droplr or CloudApp, I came across and downloaded the “free” app CloudApp for iMobile – Cloud Drive App Sync Data. Astoundingly, this app trades on the reputations of both iCloud and CloudApp to scam users into paying $99/month for iCloud services.

Here’s a screenshot of the app’s paywall/feature description screen:

Welcome to iCloud Premium

The Setup Instructions info link goes to Apple’s own iCloud support site. And in case it’s hard to read, the app basically lists iCloud’s services as its list of features.1

But hey, it’s cheap! Only $99/month!

I nearly fell prey to the scam myself: while screenshotting the app, I accidentally subscribed (because of the way TouchID is integrated into the home button – and the home button is part of taking screenshots):

IMG 0262

Fortunately, I know how to cancel iTunes subscriptions, but I’m sure a lot of the app’s users don’t.

IMG 0263

I reported the app to Apple on November 26, but as of writing this (three days later) the app is still live in the App Store. Perhaps this helpful review of the App Store Review Guidelines will help inform whether this app is legitimate, according to the current rules:

1.1.6 False information and features, including inaccurate device data or trick/joke functionality, such as fake location trackers.

CloudApp for iMobile purports to sell a clone of all iCloud services, including Find my Friends. As far as I can tell, it does not actually provide these services.

1.1.7 App Store Reviews: Use the provided API to prompt users to review your app; this functionality allows customers to provide an App Store rating and review without the inconvenience of leaving your app, and we will disallow custom review prompts.

I didn’t personally experience the app rating prompt, but according to published reviews, the app requires users to give it a five-star rating to get full access to the app. Here are a couple examples:

CloudApp for iMobile ratings

1.5 Developer information: People need to know how to reach you with questions and support issues. Make sure your Support URL includes an easy way to reach you. Failure to include accurate and up-to-date contact information not only frustrates customers, but may violate the law in some countries

CloudApp for iMobile helpfully provides two support links:

First, in the App Store description, the app’s official support site is that of the real CloudApp, which conveniently includes real support information and a way to get in touch with real humans. (I can only wonder what these humans think about support requests coming from CloudApp for iMobile users – and their $99/month subscription charges.)

But in the app itself, the “info” button goes to Apple’s own iCloud support site.


2.3 Accurate Metadata Customers should know what they’re getting when they download or buy your app, so make sure your app description, screenshots, and previews accurately reflect the app’s core experience and remember to keep them up-to-date with new versions.

The app states “Subscriptions are from $4.99 USD Monthly or $9.99 USD Yearly with 3 days free trial.” In a world where everything is “fake news”, I don’t want to go so far as to call this a “lie”, but turning $9.99/year into $99/month might raise a few eyebrows.

2.3.1 Don’t include any hidden or undocumented features in your app; your app’s functionality should be clear to end-users and App Review.

We may have a winner: the app’s description states:

“` ¬ Sync Data your clouds [sic] service files[sic]: Dropbox…. [sic]

¬ Import file [sic] by more ways: internet, clouds [sic] downloads… [sic] “`

…I’m not sure what this means, but it sounds pretty accurate.

2.3.2 If your app includes in-app purchases, make sure your app description, screenshots, and previews clearly indicate whether any featured items, levels, subscriptions, etc. require additional purchases.

You can’t actually do anything in the app without subscribing for the $99/month plan. This doesn’t seem to be stated anywhere.

2.3.7 Choose a unique app name, assign keywords that accurately describe your app, and don’t try to pack any of your metadata with trademarked terms, popular app names, or other irrelevant phrases just to game the system. App names… should not include prices, terms, or descriptions that are not the name of the app. App subtitles are a great way to provide additional context for your app; they must follow our standard metadata rules and should not include inappropriate content, reference other apps, or make unverifiable product claims.

CloudApp is a preexisting service run by the good folks at, not Tran Ngoc Lam, so that may be an issue.

Also, while I’m guessing Apple doesn’t love the use of “iMobile” since it sounds confusingly similar to Apple’s own cloud services, the iMobile trademark is actually owned by TUNGTZU INDUSTRIAL CO., LTD. CORPORATION TAIWAN. Maybe they need to take it up with Apple?

3 Business …And while pricing is up to you, we won’t distribute apps and in-app purchase items that are clear rip-offs. We’ll reject expensive apps that try to cheat users with irrationally high prices.

At $99/mo or $1188/year, if you subscribe to CloudApp for iMobile and buy an iPhone X – and use them both for two years – CloudApp will be more expensive by a factor of two.

3.1.2(a) Permissible uses:

Apps must not force users to rate the app, review the app, download other apps, or other similar actions in order to access functionality, content, or use of the app.

YHWHs child writes in the review entitled “Confused ★★★★★”:

“Tells you you have to give a 5star rating in order to use it to see if its worth any time I just needed basic cloud and this over came it???”

If this doesn’t constitute forcing users to rate the app, maybe the standard requires something more substantive, like threatening bodily harm to your relatives?

3.1.2(c) Subscription Information: Before asking a customer to subscribe, you should clearly describe what the user will get for the price. How many issues per month? How much cloud storage? What kind of access to your service? Also ensure you clearly communicate the requirements described in Schedule 2 of your agreement in Agreements, Tax, and Banking.

Prior to upgrading, the app describes itself with features like “Increase memory for your Cloud”, “Find your iOS device, Apple Watch, or Mac”, and “Find your friends and family”. Although the app does none of these things, when prompted to subscribe to “UPGRADE PREMIUM MONTHLY” I realize that, deep in my heart, I do want to be premium. Is that enough?

3.2.2 Unacceptable

(ii) Monetizing built-in capabilities provided by the hardware or operating system, such as Push Notifications, the camera, or the gyroscope; or Apple services, such as Apple Music access or iCloud storage.

“Keep all your files safely stored in iCloud” just might be construed to be “monetizing built-in capabilities”.

4.2.5 Apps that are primarily iCloud and iCloud Drive file managers need to include additional app functionality to be approved.

There’s not much to do in the app besides browsing your files. But maybe the hefty Premium fee scratches the “shopping itch” that we all have, freeing us to do more productive things with our time than wandering around the local Tiffany & Co.

5.2.1 Generally: Don’t use protected third party material such as trademarks, copyrighted works, or patented ideas in your app without permission, and don’t include misleading, false, or copycat representations, names, or metadata in your app bundle or developer name. Apps should be submitted by the person or legal entity that owns or has licensed the intellectual property and other relevant rights and is responsible for offering any services provided by the app.

Pretty sure there’s something in here about purporting to sell iCloud services.

I write this for two reasons: one, I was genuinely curious how many App Store Review Guidelines one can flagrantly violate while flying under the radar.

The answer is thirteen.

In the case of CloudApp for iMobile, Apple should:

  1. Refund all in-app purchases ever made in CloudApp for iMobile to the unwitting customers who shelled out for this scam.

  2. Personally apologize to said customers.

  3. Ban this developer.

The bigger reason for writing this is that I am genuinely frustrated.

It’s maddening that garbage like this gets through the App Store review process when legitimate developers providing truly useful services are stymied all the time.

I’ve been on the blunt end of App Review rejections a number of times. Sometimes the rejections were useful and helped us provide a more useful, refined experience; other times we ran afoul of a nitpicked interpretation of a single minor guideline (in one case, requiring us to simply remove a truthful, non-trademark-infringing phrase from an app description – a change that made it harder for users to understand the service we provided).

A better App Store ecosystem is good for everyone. Here’s a good place to start: reconfigure the app review process to let good apps through, and protect users from the bad ones.

Right now it seems like the opposite is happening.

p.s. If you have any good suggestions for a Droplr/CloudApp-like service for iOS, I’m all ears. In the meantime I may just Workflow it with Dropbox.

  1. Here’s the full list:

¬Backup Contact, Backup iCloud.
¬Increase Memory for your Cloud.
¬Download & Upload Data to iCloud
¬Keep your photos up to date
¬Keep all your files safely stored in iCloud
¬Share music, books, apps, and more with your family
¬Find your iOS device, Apple Watch, or Mac
¬Find your friends and family
¬Pages, Numbers, and Keynote
¬Mail, Contacts, Calendar, Notes, and Reminders
¬Music, apps, and iBooks
¬iCloud storage

The thing about overusing people’s names, Pete

Overheard in Slack:

you don’t have to @ someone. just typing their name works too (Slack adds your name as a notification trigger by default)

The thing about using people’s real names to alert them, Pete, is that sometimes it can come across as an unnatural attempt to build rapport.

Pete, have you ever read ​How to Win Friends and Influence People​? You’re probably not missing out. It’s a blight on society.

You see, Pete, the author, Dale Carnegie, thought people love nothing more than hearing the sound of their own names. Which – I’m sure you’ve noticed, Pete – spawned generations of douchey salesmen who will incessantly throw your name into a sentence as though they have the right to it. They’ll probably even feign familiarity with your spouse and kids and infer that you should hang out sometime and maybe share holiday cards, Pete, even though they just laid eyes on you forty five seconds ago.

I’m sure you’ve met people like this, Pete. You met them and you shook their hand and you accepted their greasy business card and then you left it on the bar when you refreshed your G&T because this is a networking event, Pete, but you’re not going to be anyone’s patsy.

TL;DR: If you need someone to get notified in Slack, don’t try to work their name into the sentence. Just use their @username, for decency’s sake.

Favorite books of 2016…

I just loaded my iPhone up with more books and realized what a rich year it’s been so far in reading.1

If you’re on the lookout for good reads (I always am!), here are some of the best books I’ve read recently:

  • Mindset: The New Psychology of Success (Carol Dweck) – Dweck’s TED Talks are great but the unabridged book well worth it. Read it if you care about living well.

  • Born to Run: A Hidden Tribe, Superathletes, and the Greatest Race the World Has Never Seen (Christopher McDougall) – this book changed my perspective on human physiology and convinced me that running in 100° Phnom Penh heat is actually pretty tame on the scale of human athletic achievements (and, believe it or not, can be quite enjoyable).

  • Wake, Sleeper (Bryan Parys) – a masterfully crafted memoir of growing up and grappling with faith. Equal parts tragic, hilarious, absurd, and profound, it was enjoyable and thought provoking to the end. This is one I read slowly, with my eyes, to savor the prose.

  • High Output Management (Andy Grove) – with such a yawn-inducing title I almost passed it over, but I’m glad I didn’t. It’s one of the highest-density books I’ve read in terms of value-per-page. I’m sure I will return to it year after year.

  • Influence: The Psychology of Persuasion (Robert B. Cialdini) – I’ll just copy from the book’s description: this is “the classic book on persuasion, [which] explains the psychology of why people say ‘yes’—and how to apply these understandings”. I had many ah-ha! moments learning to recognize why I behave in certain ways, often against my felt wishes.

  • Thirteen Days: A Memoir of the Cuban Missile Crisis (Robert F. Kennedy) – an inside account of the decision-making process that diffused likely nuclear war. Fascinating account of the human elements of negotiations. (I had previously read this in grad school; definitely worth the re-read.)

  • Finding George Orwell in Burma (Emma Larkin) – I’ve never paired travel writing with actual travel before but this provided an insightful introduction to Burma. Without it I could never have understood what a positive change has happened in the country in just ten years since it was published.

  1. This has been largely facilitated by the excellent Voice Dream Reader text-to-speech app, which lets me read equally well whether at a cafe, on a run, or on a bumpy bus ride. It might be worth a separate post, but for me the notion of “reading” has transformed in recent years from a discrete physical activity (moving your eyes across the author’s written words) into a cognitive activity (absorbing the author’s words with your mind). This has been completely liberating. Hat tip to Jared Goralnick, who got me started down this path with his evangelism of

Quick entry into Asana using LaunchBar, Script Menu, etc

Here’s a quick way to get tasks into Asana using LaunchBar (my preferred method) or Script Menu. (Requires a little nerdery.)


  1. Install the Asana Command-Line Client and set it up
  2. Download this AppleScript wrapper and update the config properties
  3. Put the script somewhere you can access it (e.g. via LaunchBar, Alfred, Script Menu, etc)

Usage (LaunchBar):

  1. Invoke LaunchBar, type your shortcut to the script and tap space
    • Enter your task title

Usage (generic):

  1. Invoke the script
    • Enter your task title in the dialog box


  • New tasks will appear as private tasks at the top of your “My Tasks” list.
  • If you’re an Alfred user, Mannie Schumpert’s QuickTask workflow is probably better.

Log ad hoc items into OmniFocus

OmniFocus provides my daily roadmap for where I’m going. But maps can be unreliable: sometimes an emergency requires a detour … and sometimes you just pause for an unscheduled cup of coffee or phone call with a friend.

To quickly log those unanticipated events in OmniFocus – without imposing additional overhead on the system – I invoke these simple scripts from LaunchBar:

  • Log completed item to OmniFocus (CC) – saves a completed task to my work-misc project
  • Log completed item to OmniFocus (Misc) – saves a completed task to my personal-misc project
  • Log distraction to OmniFocus – saves a completed task to my distractions project

When something comes up that I’d like to log:


  • ⌘ space to invoke LaunchBar
  • logcc, logmisc, or dist to choose the type of entry
  • space to start typing
  • [type what it was]
  • Enter to save

Now a completed task appears in the appropriate location, and my Completed Tasks perspective gives a more accurate representation of the day.

To use it, download the script and customize the project name and context to fit your needs. Should work with Alfred as well.

Log completed item to OmniFocus

A solution to Premature Quick Entry

You’ve done it a million times: You added a task in Quick Entry. Then, seconds later, you came across a link that would have been useful to include. Or an idea that should be part of that task.

At this point, you have two options:

  1. Quickentry a new task with more details. You’ll have to merge the two later, but hey.
  2. Edit the task:
    • Switch to OmniFocus
    • Locate the task (which might require opening a new window and some digging)
    • Select the task
    • ⌘-' into the Notes field
    • Add details while they’re fresh
      (By now, you’ve totally broken your flow – and eliminated any benefit of using Quick Entry in the first place – but that’s it’s a small price for being organized.)
  3. Fire up LaunchBar, hit a-n-space to access the Append Note to Newest Task script, and type your note. Tap Enter and rejoice: your note is added to that task you just created, and you haven’t lost your flow.

If you want to add links or other notes instead – or you (gasp!) don’t use LaunchBar or Alfred – just execute the script without custom input and it will append your clipboard contents instead.


Append Note to Newest Task

p.s. Related but far less useful: Append Note to Selected Task(s)

p.p.s. Updated 2015-05-17 to work around a bug that overwrites a file attachment when editing a task note.