2015-01-14 3 views
0

Я пытаюсь выполнить следующий Applescript в правиле, которое я установил в Mac Mail. Я запускаю OS 10.10.1 Yosemite на моем iMac. Мое правило ищет конкретное электронное письмо, которое я получаю каждый день, затем инструктирует Mail выполнить мой Applescript. Правило отлично работает, когда я вручную выделяю письмо и нажимаю «Применить правила»; однако, когда я запускаю свой компьютер утром и получаю свое первое письмо дня. Программа Applescript попадает в бесконечный цикл, о чем свидетельствует вихревой значок, который появляется в строке меню. BTW: Моя автоматическая рутина работает отлично. Мое мышление заключается в том, что Applescript запутывается, пытаясь выполнить, пока Mail загружает всю мою почту ???? Какие-либо предложения?? О, я начинающий ... THxApplescript & Rules in Mail

tell application "System Events" 
    tell process "Mail" 
     -- Select the Print menu item 
     click (first menu item of menu "File" of menu bar 1 whose name begins with "Print") 
     tell window 1 
      -- Wait until the print sheet appears 
      repeat until sheet 1 exists 
      end repeat 
      tell sheet 1 
       -- Click the PDF button 
       click menu button "PDF" 
       -- Select the PDF to SBS Dropbox menu item 
       click (first menu item of menu 1 of menu button "PDF" whose name begins with "PDF to SBS Dropbox") 
      end tell 
     end tell 
    end tell 
end tell 

ответ

0

Сначала вам нужно использовать обработчик AppleScript, называемый по правилам почты:

on perform mail action with messages theMessages for rule theRule 

Внутри этого обработчика у вас есть доступ к почте, соответствующих вашим правила правил электронной почты и делать все, что вам нравится. Вот скелет вы можете использовать, чтобы добавить код:

using terms from application "Mail" 
    on perform mail action with messages theMessages for rule theRule 
     tell application "Mail" 
      repeat with thisMessage in theMessages 
       -- place your code here 
      end repeat 
     end tell 
    end perform mail action with messages 
end using terms from 

В вашем конкретном случае, я думаю, мы можем попытаться поместить ваш код внутри повтора петли и пусть почта открыть почту перед выполнением и закрыть его после печати :

using terms from application "Mail" 
    on perform mail action with messages theMessages for rule theRule 
     tell application "Mail" 

      -- walk through all matching messages 
      repeat with thisMessage in theMessages 
       -- open the message 
       set openedMail to open thisMessage 

       -- perform your UI scripting 
       tell application "System Events" 
        tell process "Mail" 
         -- Select the Print menu item 
         click (first menu item of menu "File" of menu bar 1 whose name begins with "Print") 
         tell window 1 
          -- Wait until the print sheet appears 
          repeat 30 times 
           if sheet 1 exists then exit repeat 
           delay 0.5 
          end repeat 
          tell sheet 1 
           -- Click the PDF button 
           click menu button "PDF" 
           -- Select the PDF to SBS Dropbox menu item 
           click (first menu item of menu 1 of menu button "PDF" whose name begins with "PDF to SBS Dropbox") 
          end tell 
         end tell 
        end tell 
       end tell 

       -- close the message 
       close openedMail 

      end repeat 
     end tell 
    end perform mail action with messages 
end using terms from 

Пока что не проверено! И я предотвращаю запуск скрипта в бесконечном цикле при попытке получить доступ к листу печати сейчас.

Попробуйте! Наслаждайтесь, Майкл/Гамбург

+0

Спасибо !!! Я дам им попытку и дам вам знать, как они работают ... – Rob

+0

Спасибо. Ваше первое предложение привело к еще одному непрерывному циклу; где Mail открыла письмо, но не выполнила задачу. Который он затем отменил и попробовал снова и снова. 2-е предложение, похоже, работает отлично; однако после завершения задачи он не закрывает адрес электронной почты. Не то, чтобы в этом проблема, но я думал, что тебе хотелось бы знать. Я посмотрю, как это работает завтра утром, когда я получаю новое электронное письмо пятницы. Еще раз спасибо... – Rob