2013-08-18 73 views
1

目前,我有一個流程設置,導致文件 - 'cb.txt' - 被添加到我的Dropbox。我通過應用程序名稱'Dropbox'和添加的備註標題'cb.txt'得到一個低吼通知。我想'cb.txt added'通知運行一個applescript,將文本從cb.txt複製到我的剪貼板。低吼通知的規則可以在here找到。運行Applescript與咆哮2.1規則

這裏是我想要運行的AppleScript(當我通過AppleScript的本身運行它,它成功地增加了cb.txt的內容到剪貼板):

set the_file to "HardDrive:Users:Me:Dropbox:Folder:cb.txt" 
set the_text to (do shell script "cat " & quoted form of (POSIX path of the_file)) 
set the clipboard to the_text 

我保存這個文件來~/Library/Application Scripts/com.Growl.GrowlHelperApp作爲蘋果腳本。我還使用此代碼保存了另一個版本:

using terms from application "Growl" 
    on perform action with notification 
     ignoring case 
      if notification's app name is Dropbox then 
       if notification's note title contains "cb.txt added" then 
        set the_file to "Macintosh HD:Users:Caleb:Dropbox:Apps:CBApp:cb.txt" 
        set the_text to (do shell script "cat " & quoted form of (POSIX path of the_file)) 
        set the clipboard to the_text 
       end if 
      end if 
     end ignoring 
    end perform action 
end using terms from 

上一個腳本在運行時不執行任何操作。我保存爲Rules.scpt:

using terms from application "Growl" 
    on evaluate notification with notification 
    --Rules go in here 
    --Ultimately return what you want Growl to do with the notification 
    end evaluate notification 
end using terms from 

很明顯,我有點卡住了。如果有人能夠給我如何讓我的工作applescript代碼運行,當我收到特定的低吼通知的建議,我將不勝感激!

+0

我沒有看到任何地方在該教程頁他們在哪裏提到應用程序名稱,你有沒有嘗試過,如果聲明?另外,你有沒有嘗試把「Dropbox」放在引號中? – scohe001

+0

嗨@josh,這並不讓我感到驚訝,低吼頁面並沒有顯示出更好的效果。我有時會發現他們的頁面缺乏細節。因爲您正在使用應用程序「Growl」中的條款,所以只要正確使用它們,就可以使用growl sdef的任何屬性。如果您不能使用應用程序名稱,那麼評估多個規則將會更困難。 – markhunte

回答

0

您可以使用應用程序名稱,但是如果不在字符串周圍放置引號,則會將其視爲變量。

如果在嘗試訪問它/使用它之前未聲明該變量,則會出現錯誤。

這就是發生在你身上的事情。您可以在Consol.app

18/08/2013 11:46:11.961 Growl[89225]: completion error: Error Domain=NSPOSIXErrorDomain Code=2 "The operation couldn’t be completed.... .../Library/Application Scripts/com.Growl.GrowlHelperApp/Rules.scpt: execution error: The variable Dropbox is not defined. (-2753) }

看到這把字符串的Dropbox在引號將解決這個問題。

這是我使用的一項工作測試。

using terms from application "Growl" 

    on evaluate notification with notification 

     if notification's app name contains "Image File" then 
      if notification's note title contains "jpeg Error" then 
       do shell script "echo " & quoted form of note type of notification & " > ~/notification.txt " 

      end if 
     end if 


     if notification's app name is "Dropbox" then 

     if notification's note title contains "cb" then 
      set the_file to ("cb.txt") as string 
      set the_text to (do shell script "cat ~/Dropbox/" & quoted form of the_file) 
      set the clipboard to the_text 
      do shell script "echo " & quoted form of the_text & " > ~/dbnotification.txt " 
     end if 
    end if 
    end evaluate notification 
end using terms from 

這也說明你如何測試不同的規則

注意** 通常我會獲得與用戶的主文件夾:

set homePath to (path to home folder from user domain) as text 

但似乎是在一個錯誤咆哮,返回一個咆哮文件夾

com.Growl.GrowlHelperApp/Rules.scpt: execution error: cat: /Users/USERNAME/Library/Containers/com.Growl.GrowlHelperApp/Data/Dropbox/cb.txt: No such file or directory (1)

+0

非常感謝@markhunte,那就是訣竅。我有一些測試要弄清楚我需要保留的Growl文件夾中的哪些腳本,但它現在可以完美運行。我在iPhone上覆制文本,在[Pythonista](http://omz-software.com/pythonista)中運行「粘貼」腳本,然後可以在我的OS X剪貼板上使用該文本。太好了! – user2690304

+0

@TerryMcCall,建議編輯暗示返回growl文件夾而不是用戶主文件夾的錯誤是由於沙盒造成的。 '因爲咆哮現在是沙盒,它會返回一個咆哮文件夾。這可能是這種情況。但是我將它歸類爲錯誤而不是預期的行爲。將腳本放在'com.Growl.GrowlHelperApp'文件夾中意味着用戶同意腳本正常運行並與用戶環境交互。無論這是蘋果故障還是咆哮,我都不能說。 – markhunte