このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

AppleScriptで自身の終了(quit)について

発言者:toyo
( Date Thursday, January 31, 2002 14:38:47 )


AppleScriptにてscriptを作成していますが、
そのscript内で自身を終了させる事は可能なのでしょうか?
例えば

try
  set sel_folder to choose folder
on error number err_num
  if err_num is not -128
    error "異常終了"
  else
    quit me        <-----------ここがよく解りません。
  end if
end try
choose folder

というような場合、最初のchoose folderにてキャンセルボタンを
押された際、ここで自身を終了させたいのですが可能なのでしょうか?
2度目のchoose folderに入らないで自身を終了させたいと思うのですが
如何でしょうか?
変数を利用してif文で2度目のchoose folderを回避させたりとか
逃げ道はあると思いますが、quit命令で自身をその行で終了させるのは
不可能なのでしょうか?

非常に初歩的な質問なのかも知れませんが、どなたかご教授ください。

田中求之 さんからのコメント
( Thursday, January 31, 2002 14:48:28 )

スクリプトをアプリケーション(アプレット)として動かす場合には、quit
によって、そのスクリプト=アプリケーションを終了することができます。

スクリプトとして走らせる(必ずしもアプリケーションにしない)ということ
であれば、いくつか方法はあるのですが(強制的にエラーを起こさせることも
一つのてです)、一番簡単なのは、以下のように return を実行するように
しておくことでしょうね。

try
  set sel_folder to choose folder
on error number err_num
  if err_num is not -128 then
    error "異常終了"
  else
    return
  end if
end try

toyo さんからのコメント
( Thursday, January 31, 2002 16:16:04 )

田中先生、早速resありがとうございます。
もう少し勉強させてください。

●基本的にアプレットというのは、実行専用にて保存した場合
 と考えていますが、間違いでしょうか?
 スクリプトして走らせるというのは、コンパイル済みスクリプトとして
 保存して実行する、という事でしょうか?
 或いは、スクリプト編集プログラムの「実行」ボタンによる実行を
 指すのでしょうか?

>スクリプトをアプリケーション(アプレット)として動かす場合には、quit
>によって、そのスクリプト=アプリケーションを終了することができます。
●前述の例(quit使用)を実行専用(applet?)で保存し
 最初のchooseにてキャンセルした場合、2度目のchooseが実行されます。
 これは何故でしょうか?

●田中先生の例(return使用)の場合、on〜endのサブルーチン内部での
 使用の際には、親のルーチンに戻ってしまうと思うのですが、
 サブルーチン内部でアプレットを終了させる場合は、errorコマンドしか
 無いのでしょうか?

ホントに初歩的な質問ばかりですが、よろしくお願いします。

Junnama さんからのコメント
( Thursday, January 31, 2002 18:31:23 )

アプリケーション(アプレット)として動かす場合ですが、
終了したい所に、

tell my application --もし明示的に自分自身を指定するならば
  quit
end tell

といれると終了する筈ですが、


tell my application
  quit
end tell
beep
beep

とすると、1回だけ警告音が鳴ってしまいます(G4/400,OS9.2.1)

自分自身(アプレット)が activateされていないと、終了するまでの間に
処理が続行されてしまうことがあるようです。

# 少なくとも以前はそうでした。

今やってみると、

tell my application
  activate
  quit
end tell
beep
beep

では時々(1回)鳴ります。

tell my application
  activate
  quit
  activate
end tell
beep
beep

では鳴りません。

toyo さんからのコメント
( Thursday, January 31, 2002 18:52:33 )

Junnamaさん、ありがとうございます。
activate1個も2個でも、一度鳴ってます。
beepの代わりにdisplay dialogでテストしましたが
どちらもdialogが表示されてしまいます。
これって私のマシンの環境が悪いんでしょうか?
環境はPowerbookG3broze os9.2.1なんですが...。