• ベストアンサー

applescriptで変数の代入について

現在applescriptにて自動マウントのscript挑戦中です。 tell application "Finder" try mount volume "afp://●" delay 10 end try end tell のように作成したのですが、事前に変数aURLにアドレス文字列を設定して、その変数aURLを●に代入したいのですがget aURLとかset aURL等試しているのですがうまくいきません。 変数をどの様に呼び出すと良いのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • capy2009
  • ベストアンサー率72% (337/465)
回答No.1

質問がよく分からないのですが、 tell application "Finder" try set aURL to "192.168.1.27" mount volume "afp://" & aURL as string delay 10 end try end tell って事ですか?

ponsuke_21
質問者

お礼

有難うございます。 接続できるようになりました。 今まで文字列を代入や挿入といった考えかたしか出来ていませんでした。 文字列を繋げるということだったんですね。

ponsuke_21
質問者

補足

更に進めて、たまたまサーバが用意できていなかった場合、接続を中止するように記述してみました。 tell application "Finder" with timeout of 3 seconds mount volume "afp://" & aURL as string end timeout end tell しかし、これでは不十分のようでした。 タイムアウトでscript自身のタイムアウトメッセージが出てしまいました。 また、タイムアウトでscriptのエラーメッセージが出ている裏で、継続して接続しようとしています。 接続動作を中止し、そのまま終了または次動作に移行出来れば理想なんですが。

その他の回答 (1)

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.2

> 接続動作を中止し、そのまま終了または次動作に移行出来れば理想なんですが。 これは結構な難問です。一つの策として、 tell application "Terminal" do script "mkdir /Volumes/MountPoint" do script "mount_afp -i afp://username:password@192.168.1.27/VolumeName /Volumes/MountPoint" end tell とすれば、192.168.1.27 の VolumeName というボリュームをマウントしに行きます。相手のマシンが存在しない場合には、ターミナルのシェルはそのままエラーが出るまで数分間待ちますが、AppleScript の方はマウントの成功失敗に関わらずすぐに制御が戻るので、次のステップに進めます。 シェルコマンドを実行するスクリプトには do shell script がありますが、こちらはエラーが帰ってくるまでスクリプトが止まるので、mount コマンドを実行するのと同じ事になります。

ponsuke_21
質問者

お礼

いろいろありがとうございます。 まずは教えていただいたscriptを試しながら、勉強していきたいと思います。 マウス操作だと、「サーバへ接続」、「アドレス入力」、「繋がらないようだと×印を押してキャンセル」と、至って簡単な操作なんですけど、scriptで再現すると、ここまで高度で難問とは思ってもいませんでした。