2014-09-10 56 views
0

而腳本Mac的PDF查看器應用程序脫脂我曾經遇到過一個有點古怪的問題。我試圖格式化Skim註釋以便導出。我有一個處理程序,它根據各種註釋類型(文本註釋,高亮註釋,錨定註釋,下劃線註釋,穿透註釋)對事物進行不同的格式設置。我不想在我的各種處理程序中調用Skim,所以我試圖將註釋類型作爲字符串(而不是常量)傳遞,但從終端運行腳本時遇到奇怪的錯誤。這是問題的一個簡單的例子:在AppleScript的獲取脫脂註釋類型爲字符串

如果我保存腳本使用此代碼: tell application "Skim" to return type of (note 1 of front document) as string

,我從AppleScript的編輯器中運行它,我得到這樣一個"highlight note"結果。但是,如果我運行從終端(例如osascript test.scpt)該腳本,我得到這樣的結果: «constant ****NHil»

所以,當我嘗試運行if, then檢查註釋類型,從編輯器中運行時,我的處理工作,但失敗當從終端運行(我想要運行它們的唯一方式)。例如,此語句在編輯器中返回truereturn "highlight note" = («constant ****NHil» as string),但從終端返回false

所以,我的問題:如何在AppleScript的串運行從終端腳本時處理脫脂註釋類型?

回答

0

恆強制將失敗,因爲osascript不加載術語只是爲了運行一個腳本編譯。

第一方案:AppleScript的另存爲 「文本」 格式

osascript test.applescript 

-

解決方案二(無腳本文件):

osascript -e 'tell application "Skim" to (type of note 1 of front document) as text' 

-

三解決方案(這個appleScript):

run script "tell application \"Skim\" to (type of note 1 of front document) as text"

-

第四溶液(這個的AppleScript):

tell application "Skim" to tell (get type of note 1 of front document) 
    if it = text note then return "text note" 
    if it = anchored note then return "anchored note" 
    if it = circle note then return "circle note" 
    if it = highlight note then return "highlight note" 
    if it = underline note then return "underline note" 
    if it = strike out note then return "strike out note" 
    if it = line note then return "line note" 
    if it = freehand note then return "freehand note" 
end tell 
+0

這是美好的,我已經使用了未編譯.applescript解決方案。謝謝。 – smargh 2014-09-11 19:45:41