AppleScript实现Word文本替换和将Omnifocus的task发布到日历上

JannerChang
4 min readSep 10, 2015

绝对是提高Mac效率的利器

研究AppleScript要从我的工作开始谈起了,我的工作基本上都是固定流程的,所以很多程式化的task如果能一键生成就完美了,之前想了很多功能在群里咨询半天,结论是没法实现,很是苦恼,但是有个Omnifocus的相关操作我觉得应该能实现,因为针对Omnifocus的AppleScript很多,用AppleScript应该能解决.遂开始研究AppleScript

很早以前就想研究来着,但是实在不知道该如何下手,总想看看Omnifocus的AppleScript的API是啥呢?在官网根本找不到,结果前两天早了个教程,有一章叫读懂AppleScript字典,真是醍醐灌顶啊,这才找到AppleScript的大门啊.

这不看不知道,一看下一跳,支持AppleScript的app是如此之多,的app更是能实现各种操作,绝对能实现你的大部分想法,太🐂🐝了.

经过两天的研习,各种搜索,各种实例代码的copy终于实现了两个小功能✌️

Microsoft Word 2016 Mac版用AppleScript实现一键替换文本

工作原因有个制式文档,每个重复任务的流程收尾都是编辑这个文档,所以我设定了很多替换关键词,每次替换这些关键词就行,但是每次编辑的时候都记不住都有哪些关键词,就想能否有个列表或是类似的功能,将特定关键词分别替换了多好,AppleScript能解决✌️.

tell application "Microsoft Word" 
set findRange to find object of selection
tell findRange
set caseNo to text returned of (display dialog "案号" default answer "案号")
execute find find text "案号" replace with caseNo replace replace all
end tell
end tell

是个基本功能的实现,就是需要你选一下需要替换的文本,然后运行这个脚本,会弹出一个输入框,输入你要替换的文本就OK了,我是根据我的文档固定了关键词,你们要用的话,需要自己修改修改.

将Omnifocus的task的defer日期发布到日历上

Omnifocus task的due date虽然能在订阅日历上显示,但是task完成后在订阅日历上也消失了,有时候会影响到回顾搜索.故琢磨如何把task的日期发布到日历上呢?经过几天的研究,从各种实例中copy学习,终于完成一个初步的脚本

tell front document Omnifocus application "OmniFocus" 
tell content Omnifocus document window 1
set omnifocusFocusItem to value Omnifocus selected trees
repeat with thisItem in omnifocusFocusItem
set deferDate to defer date Omnifocus thisItem
set dueDate to due date Omnifocus thisItem
set eventName to note Omnifocus thisItem
set dateString to short date string Omnifocus deferDate & " " & time string Omnifocus deferDate
tell application "Fantastical"
parse sentence eventName & " " & dateString with add immediately
end tell
end repeat
end tell
end tell

现在仅仅是实现了一个基本功能,以后更丰富的可以继续改进,AppleScript真的是太强大了!👍

Originally published at jannerchang.tumblr.com.

--

--