그동안 OS X와 Xcode를 사용하면서 애플스크립트(AppleScript)란 단어를 간혹 들어 보고 샘플 코드를 본적은 있지만 실제 사용해 본적은 없었습니다. 코코아와 Objective-C를 둘러 보기도 벅찬데 애플스크립트까지 볼 여유가 안나서 차일피일 미루고 있었던 것 같습니다.

하지만 아무래도 맥을 잘 사용하고 어플리케이션을 효율적으로 만들기 위해서는 애플스크립트를 알고 있어야 할 것 같아 간단히 살펴 보았습니다. 아래는 애플스크립트 Example 폴더에 있는 'Finder Windows - Hide All'이란 샘플코드입니다.
보시다시피 프로그래밍 언어라기 보다는 일반 영어문장에 더 가까운 것 같습니다. 애플스크립트를 지원하는 여러 어플리케이션들의 기능과 조합하여 사용하면 다양한 작업을 할 수 있습니다. 이전까지는 그냥 쉘스크립트에서 확장된 언어인줄만 알았는데, 쉽고 재미있는 문법과 함께 편리하게 맥을 사용하고 개발을 할 수 있는 막강한 기능을 가지고 있는 것 같습니다.

 
1. 스크립트 편집기
애플스크립트를 작성하기 위해서는 스크립트 편집기를 사용합니다. 위치는 응용프로그램 / AppleScript 폴더 내에 있습니다. 이 폴더내의 Example Scripts를 보시면 각종 예제들을 확인하실 수 있습니다. 스크립트 편집기를 실행하면 아래와 같이 스크립트 편집기가 오픈됩니다.


1) 사전
애플스크립트의 장점은 애플과 다른 서드파티의 OS X 어플리케이션에서 제공하는 애플스크립트 지원기능을 사용하여 편리하게 어플리케이션을 조작할 수 있다는 것입니다. 지원하는 어플리케이션과 기능은 스크립트 에디터의 사전 목록에서 확인하실 수 있습니다. 스크립트 에디터의 메뉴에서 '파일/사전열기'를 클릭하거나 단축키(Command + Shift + O)을 입력합니다.
해당 어플리케이션을 더블클릭하면 속성과 기능들을 아래와 같이 확인하실 수 있습니다. 클릭하면 포함된 속성과 명령어들이 나오며 하단에서 항목에 대한 간단한 설명을 보실 수 있습니다. 

2) 코드 자동입력
스크립트 에디터에서 마우스 우클릭을 하면 아래와 같이 항목별로 자주 사용되는 코드들이 나열되어 있습니다. 필요한 항목을 선택하면 자동으로 에디터에 입력됩니다.

아래는 Tell Blocks의 Tell "Finder"를 클릭후에 자동으로 생성된 코드입니다.
tell application "Finder"
    -- insert actions here
end tell

3) 기록
스크립트 에디터의 툴바를 보면 '기록'이란 버튼이 있습니다. 기록은 지원하는 어플리케이션일 경우 사용자의 동작을 자동으로 스크립트로 변환해 주는 기능입니다. 사용방법은 '기록' 버튼을 클릭하고 해당 어플리케이션에서 스크립트로 생성될 행동을 하고 완료 후에는 '중단' 버튼을 클릭합니다.

아래는 파인더에서 어플리케이션 폴더를 열고 스크립트 에디터를 실행하는 과정이 스크립트로 자동으로 기록된 내용입니다. 
tell application "Finder"
    activate
    set target of Finder window 1 to folder "Applications" of startup disk
    set target of Finder window 1 to folder "AppleScript" of folder "Applications" of startup disk
    open application file "Script Editor.app" of folder "AppleScript" of folder "Applications" of startup disk
end tell

자동으로 소스코드를 생성해주는 것도 편하지만 문법을 잘 모를 경우에 이 '기록' 기능을 이용하여 확인하면 편리할 것 같습니다.


2. 예제
1) Hello World!
간단히 다이알로그박스를 열고 Hello World를 읽어주는 스크립트를 작성해 보겠습니다. 아래의 내용을 스크립트 에디터 상단의 편집창에 입력하고 컴파일 버튼을 클릭합니다.

display dialog "Hellow World!" buttons {"닫기", "말하기"} default button "말하기"
if the button returned of the result is "말하기" then
    say "Hellow World"
end if

컴파일전에는 보라색으로 소스가 출력되지만 오류가 없이 컴파일이 완료되면 아래와 같이 문법이 컬러링 되어 출력됩니다.

이제 스크립트 에디터의 실행버튼을 클릭하면 아래와 같이 다이알로그박스가 열리며, 우측의 말하기 버튼을 클릭하면 Hello World 음성이 출력됩니다.

2) 새 메시지
메일에서 새로운 메시지를 작성하는 간단한 애플스크립트를 작성해 보겠습니다. outgoing messqage의 subject, content, visible 프로퍼티를 설정하여 메일의 새로운 메시지 창을 오픈하는 스크립트 입니다.
(*
아래의 내용으로 새로운 메일을 생성합니다.

제목: 안녕하세요?
내용: 반갑습니다.
수신: zzerrrrr@gmail.com
*)
tell application "Mail"
    -- 새로운 메일 생성
    set newMessage to make new outgoing message with properties {subject:"안녕하세요?", content:"반갑습니다", visible:true}
   
    -- 수신자를 설정한다   
    tell newMessage
        make new to recipient with properties {name:"zzerr", address:"zzerrrrr@gmail.com"}
    end tell
   
    activate
end tell

* 주석
주석은 (*로 시작하여 *)로 종료됩니다. 다른 언어의 '/* */' 방식과 동일합니다. 한줄 주석은 '--'를 앞에 붙여 사용합니다.

* tell 
tell은 메시지를 수신할 해당 객체를 지정합니다. 각 구문은 'tell'로 시작하여 'end tell'로 종료합니다. tell application "Mail"은 메일 어플리케이션에 메시지를 발송한다는 의미입니다.

* set ~ to ~ 
객체에 값을 설정합니다. set A to B는 말 그대로 A를 B로 설정한다는 의미입니다.
 
* with properties {name:value, ...}
생성된 오브젝트 속성들의 값을 지정합니다.

실행버튼을 클릭하면 아래와 같이 스크립트에서 지정한 속성으로 새로운 메시지를 보내는 창이 오픈됩니다. 

3. 기타
1) 실행파일로 저장
스크립트 편집기의 메뉴에서 파일/별도저장을 클릭하면 아래와 같이 몇가지 파일포맷을 지정하여 저장할 수 있습니다.


파일포맷중 응용 프로그램이나 응용 프로그램 번들로 저장하면 스크립트 에디터 없이 바로 실행할 수 있는 실행파일로 저장할 수 있습니다.

2) 참고 자 및 사이트
저도 잠시 사용해보고 글을 올리는 것이라 부정확하고 틀린 내용이 많이 있을 것 같습니다. 자세하고 정확한 내용은 아래의 관련 문서와 사이트들을 참조하시기 바랍니다.

'기타' 카테고리의 다른 글

sqlite3 둘러보기  (3) 2009.02.02
버그추적 시스템 Mantis 설치  (6) 2009.01.07
안드로이드 SDK - 바이오리듬 예제  (5) 2008.12.03
4. 기본 레이아웃 설정  (1) 2008.11.02
구글 안드로이드 소스 공개와 마켓 오픈  (2) 2008.10.23
AND