2015-01-28 2 views
0

메시지의 시작 부분에 미리 정의 된 텍스트를 삽입하는 applescript를 작성하려고합니다. 이것은 내가 현재 가지고있는 것입니다 :메시지 시작 부분에 텍스트 삽입하기

set msgClass to (choose from list {"Green", "Blue", "Purple"} with title "Choose:") 
if result is false then 
    stop 
else 
    set msgClasstxt to the result 
    set msgClasstxt to "Classification: " & msgClasstxt 

    tell application "System Events" 
     key code 126 using {command down} 
     keystroke return 
     keystroke return 
     key code 126 using {command down} 
    end tell 
tell application "Microsoft Outlook" to set selection to msgClasstxt 
end if 

내가이 할 수있는 더 나은 방법이있을거야,하지만 목적은 다음과 같다 :

  • 이동 홈 CMD + 위쪽 승/
  • 만들기 두 개의 빈 라인
  • 이동 홈 다시
  • 텍스트 삽입

내 문제는 키 스트로크가 수행되기 전에 텍스트가 삽입된다는 것입니다. Vexing. 누구든지 도와 줄 수 있습니까?

+0

중간에 어떤 OS X 버전을 사용하십니까? – summea

+0

10.10.2에서 테스트. 지연 추가, 지연 후, 삽입 텍스트 발생, 모든 시스템 이벤트 발생. – jpdyson

답변

0

키 입력 및 기타 GUI 작업이 가장 앞쪽에있는 응용 프로그램에 입력됩니다. 따라서 이러한 작업을 수행하기 직전에 목표로 삼는 애플리케이션을 항상 활성화해야합니다. 따라서 시스템 이벤트 코드 바로 앞에 다음을 넣는 것이 좋습니다. 응용 프로그램이 최전선이라고 생각한다고해도 어쨌든 확실하게하기 위해이 작업을 수행해야합니다. 다른 의견 제안

tell application "Microsoft Outlook" to activate 
delay 0.2 

또한, 당신은 컴퓨터가 물리적으로 코드를 수행 할 수있는 시간이 보장하는 GUI 코드의 각 라인 사이의 짧은 지연이 필요합니다.

지연을 사용하고 응용 프로그램을 활성화하십시오. 그게 도움이 될거야.

+0

Outlook을 올바른 창에 활성화하는 방법을 알아야합니다. 주 윈도우와 메시지 창이 열려 있다고 가정 할 수 없기 때문에 이것은 사소한 것이 아닙니다. – jpdyson

+0

또한이 작업은 동기화되지 않은 작업 자체를 해결하지 못했습니다. 나는 그것을 어떻게 "고정"했는지 게시했다. – jpdyson

0

그래서,이 내가 무슨 짓을했는지입니다 : 확실히 내가 현재 활성 메시지 창 다루고있어 수 있도록하는 조항을 걸러 -activate 시스템 이벤트를 통해 해당 창 할거고 모든 작업

tell application "Microsoft Outlook" to get the id of the first window 
set currentWindow to the result 

set msgClass to (choose from list {"Green", "Blue", "Purple"} with title "Choose:") 

if the result is false then 
    stop 
else 
    set msgClasstxt to "Classification: " & the result 
    tell application "Microsoft Outlook" 
     activate window currentWindow 
     tell application "System Events" 
      key code 126 using {command down} 
      keystroke return 
      keystroke return 
      key code 126 using {command down} 
      keystroke msgClasstxt 
     end tell 
    end tell 
end if 

Outlook은 맨 앞면 윈도우를 먼저 나열하기 때문에 첫 줄이 작동합니다. 이것은 내가 지금 원하는 것을 해낸다.

+1

좋습니다. 작동하는 솔루션을 찾은 것을 기쁘게 생각합니다. Microsoft 응용 프로그램은 항상 "Apple"방식으로 작업하지 않기 때문에 어렵습니다. 따라서 응용 프로그램이 아니라 창 ID를 활성화해야한다는 것이 좋습니다. 하나의 다른 팁. 시스템 이벤트에 뭔가를하도록 Outlook에 알릴 이유가 없습니다. 이것은 기본적으로 하나의 tell 문을 다른 것에 포함시킴으로써 수행합니다. 명령이 서로 충돌하지 않도록 tell 문을 분리하는 것이 좋습니다. 시스템 이벤트 코드 위에 outlook 명령문의 "end tell"을 넣기 만하면됩니다. 행운을 빕니다. – regulus6633

+0

^실제로; 그것은 제가 두세 번 앞뒤로 가려고 할 때부터 이월되었습니다. 좋은 팁. – jpdyson