2013-08-18 3 views
1

В настоящее время у меня установлен поток, который приводит к созданию файла - cb.txt - добавляется в мой Dropbox. Я получаю уведомление Growl с именем приложения «Dropbox» и заголовком «cb.txt». Я хочу, чтобы уведомление «cb.txt добавилось» для запуска приложения, которое скопирует текст из cb.txt в мой буфер обмена. Правила уведомления Growl могут быть найдены here.Запуск Applescript с Growl 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 

Очевидно, что я немного застрял. Если бы кто-нибудь мог дать мне совет о том, как запустить мой рабочий код приложения, когда я получу конкретное уведомление Growl, я был бы признателен!

+0

Я не вижу нигде на этой странице учебника, где они укажите имя приложения, вы пробовали без этого утверждения if? Кроме того, вы пытались поставить «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 

Это также показывает, как проверить для различных правил

NOTE ** Обычно я хотел бы получить пользователи домашней папки с:

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