从 Emacs 往 OmniFocus 添加任务

写了个命令来添加 OmniFocus 任务,使用举例如下,先输入任务名后输入备注:

M-x omnifocus-capture RET 看怪奇物语第3季 RET 共8集 RET

代码:

(defun omnifocus-capture (name note)
  "Add task to OmniFocus, NAME as the task name and NOTE as the task note."
  (interactive "sTask name: \nsTask note: ")
  (let ((quote-fn
         (lambda (s)
           "Quote S for passing as a string to AppleScript."
           (mapconcat
            (lambda (char)
              (pcase char
                (?\" (string ?\\ ?\"))
                (?\\ (string ?\\ ?\\))
                (_   (string char))))
            s ""))))
    (do-applescript
     (format
      (concat
       "tell front document of application \"Omnifocus\"\n"
       "  make new inbox task with properties {name:\"%s\", note:\"%s\"}\n"
       "end tell")
      (funcall quote-fn name)
      (funcall quote-fn note)))))

相关参考:Sending Tasks to OmniFocus from Emacs

1 个赞

厉害,厉害…

嘻嘻,怪奇物语前两季我看了 :v:, 一群小孩太萌了 :rofl:

另, Jason Blevins的个人网站我也收了,特别是最近才借鉴了他的CV模板。

为什么不用 org-mode 呢?OmniFocus 用全局快捷键会更好一点吧。

推荐使用 parse tasks into default document with transport text %s 可以在一句中同时设置flag、due、defer、note等多种属性

1 个赞

好像不是一个网站?

请问操作omnifocus的 applescript怎么查呢?这个是apple script的语法吗,还是和具体的应用有关联?

在 Script Editor.app 中,File > Open Dictionary … 然后选 OmniFocus,里面就会显示 OmniFocus 所支持的所有功能。 确实是 AppleScript 语法,但是需要购买 OmniFocus Pro 才支持,可能我之前那个没说清楚,完整的代码应该是:

tell application "OmniFocus" to parse tasks into default document with transport text %s

1 个赞

好的,学到了!:+1:

用applescript的话,感觉可以结合elisp干很多事情。

就是同一位经济学教授的个人网站啊……

请教一下,<怪奇物语> 你怎样归类? 设置的怎样的优先级?