2010-04-09 7 views
20

Có cách nào để sử dụng các phương thức AppleScript đã định nghĩa trong các AppleScripts khác tham chiếu đến AppleScript gốc với một cái gì đó tương tự như nhập khẩu (f.e. trong PHP) không?Nhập các phương thức AppleScript vào AppleScript khác?

Tôi đã viết một tole để sửa status của Skype và tâm trạng văn:

on setSkypeStatus(status, mood_text) 
    tell application "System Events" 
     set skypeRunning to count (every process whose name is "Skype") 

     if skypeRunning > 0 then --only set status if skype is running 
      tell application "Skype" 
       set myStatus to "SET USERSTATUS " & status 
       set myMood to "SET PROFILE MOOD_TEXT " & mood_text 

       send command myStatus script name "AppleScript" 
       send command myMood script name "AppleScript" 
       return skypeRunning 
      end tell 
     else 
      return skypeRunning 
     end if 
    end tell 
end setSkypeStatus 

bây giờ tôi đang tìm kiếm một cái gì đó giống như nhập khẩu skype_methods.scpt. Có chức năng như vậy không. Tôi không thể liên quan gì đến Google.

Trả lời

22

Một cách để nhập khẩu kịch bản khác như một libra ry là định nghĩa một thuộc tính được khởi tạo bằng cách tải thư viện như một đối tượng script. Sau đó, bạn có thể sử dụng lệnh tell để gọi các hàm thư viện.

property pSkypeLibrary : load script POSIX file "/Users/sakra/Desktop/skype_methods.scpt" 

tell pSkypeLibrary 
    setSkypeStatus("status", "mood") 
end tell 
3

Script Foo.scpt

set theBar to "path:to:Bar.scpt" as alias 
run script (theBar) 

Script Bar.scpt

display dialog "Bar" 

Kết quả: Một cửa sổ hiển thị "Bar"

1

Có cách làm thanh lịch hơn. Bạn có thể lưu tập tin skype_methods.scpt của bạn bên trong một thư mục Script Libraries trên máy tính của bạn.

Tùy thuộc vào cách bạn muốn xác định tính khả dụng của thư viện này, bạn sử dụng một thư mục khác.

  • Đặt tệp skype_methods.scpt vào thư mục /Library/Script Libraries để cung cấp tệp này cho tất cả người dùng trên máy tính.
  • Đặt mã trong thư mục ~/Library/Script Libraries để chỉ khả dụng cho một người dùng cụ thể.

Sau đó bạn có thể sử dụng tất cả các bộ xử lý trong thư viện đó như sau:

property Skype : script "skype_methods" 
Skype's setSkypeStatus("status","mood") 

Điều này ngăn cản các nhu cầu của đông đảo các khối tell khi sử dụng bộ xử lý từ các thư viện khác nhau.

0

Bạn có thể làm theo repo này https://github.com/abbeycode/AppleScripts đơn vị tổ chức các kịch bản của mình vào thư viện

Dưới đây là một ví dụ https://github.com/abbeycode/AppleScripts/blob/master/Scripts/Download%20Chase%20Activity.applescript

property LibLoader : load script file ((path to scripts folder from user domain as text) & "Libraries:Library Loader.scpt") 
property TransmissionLib : LibLoader's loadScript("Libraries:Transmission.applescript") 
property GrowlLib : LibLoader's loadScript("Libraries:Growl.applescript") 
property SafariLib : LibLoader's loadScript("Libraries:Safari.applescript") 
property DatesLib : LibLoader's loadScript("Libraries:Dates.applescript")