用AppleScript來增強Mac下Evernote的編輯能力

由來

上午想在Evernote中對一篇文章的子標題進行加紅操作,沒有格式刷只能一遍又一遍地選中文字,再打開調色板,選中顏色,關閉調色板,真是無以吐槽。

搜索了一下相關增強Evernote編輯能力的文章,發(fā)現(xiàn)了知乎上的一篇分享,以及v2ex上的這個帖子,都是Windows下借助Autohotkey來實現(xiàn)增加Evernote編輯能力的。想起以前在Windows下用Autohotkey那可真是得心應手啊,可惜Mac下沒有。

想起了之前用AppleScript來實現(xiàn)一些快捷操作,在Mac下是否能用AppleScript腳本來簡化上面繁瑣的加紅操作呢?

簡單看了一下上面的Autohotkey腳本代碼,發(fā)現(xiàn)只需要把選中文字轉換成html格式然后粘貼就行。然而AppleScript并沒有像Autohotkey那樣簡單的SetHTML命令。

突破

幾經折騰,終于折騰出了下面的可行代碼:

set appName to "Evernote"

-- if application appName is running then
tell application id (id of application appName)
    activate
    tell application "System Events"
        keystroke "c" using command down
    end tell
    set selectedText to the clipboard as ?class utf8?
    -- the clipboard as "HTML"
    set the clipboard to "<span style=\"color:red;\">" & selectedText & "</span>"
    set theHEX to do shell script "LC_ALL=en_US.UTF-8 pbpaste | hexdump -ve '1/1 \"%.2x\"'"
    if theHEX is "" then
        beep
    else
        run script "set the clipboard to ?data HTML" & theHEX & "?"
        tell application "System Events"
            keystroke "v" using {command down}
        end tell
    end if
end tell
-- end if

原理就是復制選中的文字,加上html顏色的標簽,然后變成html格式內容,粘貼即可。

其中的難點在于把html源碼變成剪貼板認可的html富文本格式內容,這個借助了shell中的hexdump命令以及用剪貼板作為中介。突破了這個難點之后,你就可以任意自定義html格式了。

Automator自動化

要與Evernote集成,就要借助于Automator工具了。 Automator 是 Mac 自帶的神奇小機器人,這次我們就要用它的 Workflow 功能來將腳本綁定到系統(tǒng)快捷鍵上。 先來設置 Automator,Automator 可以在 Spotlight 里快速啟動。

1、菜單里選”新建“,選取文稿類型“服務”;
2、在出來的窗口右側頂部設置“服務”收到選定的“文本”,位于”Evernote“,不要勾選”用輸出內容替換選中文本“
3、在左側選取“運行AppleScript”,雙擊或直接拖到右側區(qū)域內;
4、在出現(xiàn)的 AppleScript 編輯窗口里輸入代碼,之后保存為你喜歡的名字;
5、此時在系統(tǒng)左上角 Automator 的下拉菜單里“服務”一欄就已經有剛才你保存的服務啦!現(xiàn)在點擊剛剛保存的服務的名稱運行一次看看~~(一定要運行一次哦)

在Automator中的腳本可以更簡單:

on run {input, parameters}
    -- the clipboard as "HTML"
    set the clipboard to "<span style=\"color:red;\">" & input & "</span>"
    set theHEX to do shell script "LC_ALL=en_US.UTF-8 pbpaste | hexdump -ve '1/1 \"%.2x\"'"
    
    if theHEX is "" then
        beep
    else
        run script "set the clipboard to ?data HTML" & theHEX & "?"
        -- set input to the clipboard
        tell application "System Events"
            keystroke "v" using {command down}
        end tell
    end if
    
    --display dialog (the clipboard)
    -- return input
end run

保存的位置在/Users/yourusername/Library/Services/

現(xiàn)在開始設置快捷鍵。

1、點擊 Automator 下拉菜單中“服務->服務偏好設置”;
2、在彈出的服務偏好設置窗口右側,從“通用”中找到剛保存的服務名稱,選中該服務,右側可以看到“添加快捷鍵”的按鈕;
3、點擊“添加快捷鍵”按鈕,在鍵盤上按下需要設置的快捷鍵。

我給自己自定義的快捷鍵是cmd+shift+1。以后要在Evernote中對選中的文字進行紅色高亮時,按下cmd+shift+1就可以搞定。

是不是很簡單? 這樣,你就可以自定義一些自己常用的文本格式,綁定快捷鍵,然后就像Word中的樣式表一樣,一鍵就可以更換自己需要的格式。

這只是一個簡單的例子,相信實現(xiàn)其它的文本格式也不是難事,權當拋磚引玉,大家應該能做出更高級的功能。

一些額外的發(fā)現(xiàn):

將文本轉換成完整html源碼的AppleScript腳本:


set customHTML to "123"
set theMsg to do shell script "echo " & quoted form of customHTML & space & "| textutil -stdin -stdout -format html -convert html -encoding UTF-8"
set the clipboard to the theMsg

在terminal里用于查看剛剛復制的html內容的html源碼的命令:

osascript -e 'the clipboard as "HTML"'|perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))'

通過 AppleScript 連接印象筆記
https://dev.yinxiang.com/doc/articles/applescript.php

查看Evernote api for AppleScript的方法:
在Evernote的菜單中,選擇 "文件 > 打開字典..." 然后在顯示的應用列表中選擇Evernote。

后記:

后來發(fā)現(xiàn)Evernote還是有樣式高亮操作的,菜單路徑是格式——樣子——高亮顯示,快捷鍵是Ctrl+Command+H

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容