Thủ thuật công nghệ

Hướng dẫn sử dụng UI Scripting của Applescript trong Mac

Bất kỳ ai đã và đang sử dụng máy vi tính đều hiểu sự mệt mỏi khi phải thực hiện một chuỗi các thao tác giống nhau, lặp đi lặp lại. Lúc này chúng ta cần đến một giải pháp sao cho đơn giản, tiện lợi hơn. Nếu bạn là fan của Mac OSX, AppleScript sẽ là sự lựa chọn hàng đầu.

<>

<>AppleScript là một ngôn ngữ kịch bản (script) được xây dựng gần giống với tiếng Anh, ứng dụng để điều khiển những hoạt động của hệ thống cũng như các chương trình đang chạy trên hệ thống đó. Tuy nhiên nếu đã quen thuộc với ngôn ngữ này, bạn sẽ dễ dàng nhận thấy hạn chế của nó. Cụ thể, không phải tất cả các chương trình đều có thể thao tác trực tiếp với AppleScript. Bài viết sau đưa ra hướng giải quyết để lấp đầy chỗ trống này, đó là sử dụng giao diện người dùng (UI) AppleScript, đồng thời chúng tôi cung cấp một số script đơn giản nhằm giúp bạn hiểu rõ hơn cách thực hiện.

Kích hoạt UI Scripting

Đầu tiên, để có thể sử dụng UI Scripting, vào<> System Preferences > <>Universal Access > đánh dấu chọn vào mục <>Enable access for assistive devices.

Hướng dẫn sử dụng UI Scripting của Applescript trong Mac

Sử dụng Key Strokes

Một cách đơn giản để tương tác với giao diện của chương trình bằng Applescript là giả lập sự tham gia của tổ hợp phím (KeyStrokes), giống như bạn sử dụng những shortcut trong Mac và nhập vào các dòng lệnh.

Chẳng hạn, trong TextEdit bạn muốn thực hiện quá trình tìm kiếm – thay thế kết quả tìm kiếm. Trước tiên nhấn<> CMD-F cho chức năng <>Find/Replace, nhập vào từ cần tìm tại mục <>Find, nhấn tab để chuyển tới trường tiếp theo và nhập vào từ cần thay thế, sau đó nhấn “<>Replace All”.

Hướng dẫn sử dụng UI Scripting của Applescript trong Mac

Trong Applescript, bạn cũng có thể "nói" cho giao diện người dùng gõ các lệnh này. Bạn có thể thay thế <>CMD-F bởi lệnh <>keystroke “f” using {command down} trong Applescript. Tương tự như vậy, để thực thi phím<> CMD-SHIFT-S bạn có thể sử dụng<> keystroke “s” using {command down, shift down}. Bạn cũng có thể nhập vào UI với Applescript bởi <>keystroke “mytext”, nơi bạn có thể nhập văn bản của mình. Cuối cùng bạn có thể nhập vào một số KeyStrokes đơn giản như TAB bằng <>keystroke tab.

Hướng dẫn sử dụng UI Scripting của Applescript trong Mac

Trước khi sử dụng KeyStrokes, bạn cần chắc chắn rằng các class của quy trình đều được gọi, và đừng quên kết thúc sau các lệnh :

tell application “System Events”
tell process “TextEdit”

Dưới đây là một đoạn code đầy đủ cho hành động tìm kiếm/thay thế theo trình tự:

Hướng dẫn sử dụng UI Scripting của Applescript trong Mac

<>tell application "TextEdit"
      activate
      open "Users:angela:Desktop:Example.txt"
      if window 1
exists then

         (* Start Find/Replace Sequence *)
<>         tell application "System Events"
<>              tell process "TextEdit"
                   keystrokes "f" using {command down}
                   keyStrokes " "
                   keyStrokes tab
                   keyStrokes
" "
           
<>    end tell

               <>tell process "TextEdit"
                    <>tell window "Find"
                         click bun "Replace All"
<>                    end tell
                end tell

<>                tell process "TextEdit"
<>                     tell window "Find"
                          keystrokes "w" using {command down}
<>                     end tell
                end tell
         end tell

        
(* End Find/Replace Sequence *)

Mỗi chương trình đều có một số nút để lựa chọn chức năng, bạn có thể sử dụng các lệnh đơn giản trong Applescript để điều khiển chúng. Ở đây, với tính năng find/replace chúng ta đã tạo ra nút "<>Replace All”.

Thao tác GUI phức tạp hơn

Cũng như nhiều chương trình không được thiết kế trong Mac để xử lý bởi AppleScript thông qua UI Scripting, đôi khi bạn cần tìm xung quanh để giải quyết vấn đề này. Ở đây chúng ta sẽ sử dụng chương trình miễn phí có tên UIElementInspector.

Một khi được khởi chạy, bạn có thể kiểm tra bất kỳ phần tử UI nào mình muốn. Quá trình này sẽ diễn ra liên tục và hiển thị chi tiết mỗi khi bạn di chuyển qua.

Trong ví dụ này, bạn sẽ nhìn thấy một hệ thống được phân cấp. Menu pop-up là một phần của nhóm, nhóm này lại là một phần của nhóm khác trong một sheet của cửa sổ.

Hướng dẫn sử dụng UI Scripting của Applescript trong Mac

Bây giờ là cách làm thế nào thể hiện quá trình này trong script:

tell group 1 of group 1 of sheet 1 of window 1
tell pop up bun 1
click

Để script có thể làm việc bạn cần sử dụng đoạn code đầy đủ sau:

(* save as RTF *)
<>tell application "System Events" to set frontmost of process "TextEdit" to true
<>tell application "System Events"
<>     tell process "TextEdit"
          keystrokes "s" using {command down, shift down}
<>          tell group 1 <>of group 1 <>of sheet 1 <>of window 1
<>               tell pop up bun 1
<>                    click
                    <>tell menu 1
                         click menu item "Rich Text Format (RTF)"
<>                    end tell
                end tell

                delay 0.5
<>           end tell
<>           tell sheet 1 <>of window 1
<>                tell bun "Save" <>to click
<>           end tell
       end tell
end tell

(* end save as RTF *)

close document 1 saving no
<>else
    exit repeat
end if

<>  end tell

Trong trường hợp này, chúng tôi muốn lưu lại tài liệu dưới dạng RTF. Sử dụng một lệnh keyStrokes để mở cửa sổ "Save As". Bạn cần kích vào menu pop-up để làm xuất hiện menu chứa các mục lựa chọn.

Hy vọng rằng sau khi làm quen với cách làm việc trên Applescripts bạn sẽ có thể áp dụng nhiều hơn cho công việc hàng loạt của mình. Chúc các bạn thành công!