どれだけの人が知っているのでしょうか?AppleScript には、run ハンドラや idle ハンドラ、reopen ハンドラ、quit ハンドラといった標準で実装しているいくつかのハンドラがあります。
これらのハンドラの中に print というハンドラがあります。print という名前ですので印刷を行うのかと思いますが、違います。print ハンドラはスクリプトアプリケーション同士で通信を行うハンドラです。たとえば、以下のようなスクリプトを「実行後、自動的に終了しない」にチェックを入れてアプリケーションとして保存します。
property counter : 0
on idle
set counter to counter + 1
return 10
end idle
on print
return counter as Unicode text
end print
このアプリケーションを「Counter」という名前で保存したとします。このアプリケーションを起動させておきます。そして、以下のようなスクリプトを実行します。
tell application "Counter"
print
end tell
Counter アプリケーションは、idle ハンドラで 10 秒ごとに counter の値を増やしていきます。ですので、10 秒ごとに増えた値が結果として返ってきます。また、print ハンドラには引数を渡すことができるので次のようなこともできます。先ほどの Counter アプリケーションを次のように修正します。
property counter : 0
property myName : "Counter"
on idle
set counter to counter + 1
return 10
end idle
on print {nameOption, greetingOption}
if nameOption and greetingOption then
return "Hello, my name is " & myName & ". " & counter & " counted."
else if nameOption and not greetingOption then
return "My name is " & myName & ". " & counter & " counted."
else if not nameOption and greetingOption then
return "Hello, " & counter & " counted."
else
return counter as Unicode text
end if
end print
次のように呼び出します。
tell application "Counter"
print {false, true}
end tell
だからどうだというサンプルなのですが。print ハンドラは、idle ハンドラのようにアプリケーションとして保存し、かつ、実行後終了しない常駐アプリケーション形式でないと使えないハンドラです。スクリプト間通信を行いたいときに手軽に使えるので使い道があると思うのですが、いまだかって print ハンドラが入ったスクリプトを見たことがなかったり...。
0 件のコメント :
コメントを投稿