• ベストアンサー

applescriptで変数の代入について

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

  • Mac
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • 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で再現すると、ここまで高度で難問とは思ってもいませんでした。

関連するQ&A

  • AppleScriptで教えて欲しいです。

    現在、clipboardと同じ名前のフォルダー1つ(例:ABC123)のみ処理する。 →これを、clipboardの名前を含むフォルダー1つ(例:ABC123.4)のみ処理する。 に変更したいです。 ちなみにclipboardの名前を含むフォルダーは、1つしか存在しません。 申し訳ありませんが、実際の業務で使用している下記のスクリプト(無駄な部分も多少あるかと思いますが)を出来る限り変更を加えず、可能でしょうか? 無理であれば、大幅変更も可能ですので、ご教授の程、宜しくお願い致します。 global Num global fp set Num to the clipboard tell application "Finder" my shikyuseihan2data() --支給製版2課データ try duplicate fp to folder "data" of disk "HD" move fp to folder "jus:5)製版行き: 2課使用済" end try end tell --アクセス権 tell application "Terminal" activate do script with command "chmod -R 775 /Volumes/HD/data" quit end tell --支給製版2課のデータ on shikyuseihan2data() tell application "Finder" set x to name of every disk if "jus" is in x then else mount volume "afp://10.1.30.10/jus/" end if try set fp to "jus:5)製版行き:" & Num & ":" as text set fp to fp as alias end try end tell end shikyuseihan2data

    • ベストアンサー
    • Mac
  • applescriptでウインドウを閉じたい

    職場のローカルネットワーク内にあるmacのあるフォルダに接続するために以下のように書きました。 接続はうまくいきます。ただし同時にウインドウも開きます。 そのウインドウは不要であり、他のスタッフの目にもつくので閉じたいのですがうまくいきません。(とくにエラーも出ず、そのままウインドウが表示されたままになります) どうすればよろしいでしょうか。 tell application "Finder" activate open location "afp://***.***.***.***/Foleder/test.csv" close Finder window 1 end tell macOS10.8 Applescriptエディタ2.4.3 を使用しています

    • 締切済み
    • Mac
  • applescript で pdfを扱いたいんです。

    applescriptで、pdfファイルをアクロバットリーダ6で開けるスクリプトを書いたのですがうまくいきません。どなたか教えて頂きませんか? プレビューで開けるならopen一発で簡単なのですが、アクロバットリーダで開けたいのです。 僕は以下のようなのを書いています。 もしや、アクロバットはpdfを開けるイベントハンドラは対応して無いのでしょうか? tell application "finder" open file "01.pdf" of desktop using application "Adobe Reader 6" end tell

    • ベストアンサー
    • Mac
  • applescriptでのファイルコピー

    macmini server (SnowLeopard:OSX10.6) 上記機種を使用。 macの知識がなく、最近applescriptという機能を知りました。 使い方が全くわからない状態でしたが、 今回、NAS(マウント済み)にあるフォルダAの中のファイルBを macのServer HDの中にあるフォルダCへコピーする作業を 自動化させたいと思い、ファイルコピーの方法について調べていたところ、 とある質問サイトで下記のコードを見つけ、入力項目を埋めて実行しました。 が、「必要なボリュームがマウントされていません」とエラーがでました。 既にマウントしているのは確認しています。 恐らくボリューム名かファイルパスの入れ方が違うのかなと思い、 いろいろと試してみましたが、出来ませんでした。 ここでいうボリューム名とファイルパスとフォルダパスは どのような入れ方をすればよいのでしょうか? もしくは、他の原因であれば、その解決策を教えて頂けると 助かります。 すみませんが宜しくお願い致します。 ------ ペーストするコード (以下最後まで) -------------------- ----【入力項目】------------ set FromVolumName to "ボリューム名を入れる" ---(↑説明)コピー元となるファイルのあるボリューム名 set ToVolumName to "ボリューム名を入れる" ---(↑説明)コピー先となるフォルダのあるボリューム名 set FromCopyFile to "ファイルパスを入れる" ---(↑説明)コピー元となるファイルのパス set ToCopyFolder to "フォルダパスを入れる" ---(↑説明)コピー先となるフォルダのパス set CP_opt to "-f" ---(↑説明)cpコマンドのオプション ------------------------- tell application "Finder" set {MyMsg, MyIcn} to {"完了!", 1} if (exists disk FromVolumName) and (exists disk ToVolumName) then try do shell script "cp " & CP_opt & " " & quoted form of POSIX path of FromCopyFile & " " & quoted form of POSIX path of ToCopyFolder on error set {MyMsg, MyIcn} to {"なんらかのエラーです!", 0} end try else set {MyMsg, MyIcn} to {"必要なボリュームがマウントされていません!", 0} end if activate display dialog MyMsg buttons {"終了"} default button 1 with icon MyIcn end tell

    • ベストアンサー
    • Mac
  • AppleScriptでiCalを動かしてみたが

    以前に下記のようなAppleScriptがネット上に有りましたが(1999年12月28日) ----------------------------------------------実行 set dSta to my date "2013年6月4日火曜日 0:00:00" set dEnd to my date "2013年6月4日火曜日 16:00:00" -- 検索するカレンダー名 set calName to "仕事" -- 結果を格納する変数 set copyText to "" tell application "Calendar" set theList to every event of calendar calName whose (start date ≥ dSta) and (end date ≤ dEnd) repeat with x in theList set aDate to (start date of x) set copyText to copyText & (aDate as text) & tab & summary of x & (ASCII character 10) end repeat end tell -- 結果をクリップボードにコピー set copyText2 to my Sortsc(copyText) set the clipboard to copyText2 on Sortsc(aData) do shell script "echo " & quoted form of aData & " | sort -d" end Sortsc ------------------------------------------------------------- 今回これを利用したい思い osx10.8 applescript エディタ2.5.1にて起動してみようとしましたが下記のような不思議な現象がでました。 set dSta to my date "2013年6月4日火曜日 0:00:00" set dEnd to my date "2013年6月4日火曜日 16:00:00" としていますが date "1999年12月28日火曜日 0:00:00" and end date ≤ date "1999年12月28日火曜日 16:00:00" となってしまった。 なぜそうなったのかが分かりません。 どなたかご存知のお方がおられましたらご教授いただきたいのですが。 -----------------------------------返された値 tell application "Calendar" get every event of calendar "仕事" whose start date ≥ date "1999年12月28日火曜日 0:00:00" and end date ≤ date "1999年12月28日火曜日 16:00:00" --> {} end tell tell current application do shell script "echo '' | sort -d" --> "" end tell tell application "AppleScript Editor" set the clipboard to "" end tell ------------------------------------------------------------- 因にosx10.6 AppleScript2.3にはきちんと返された値は内容が取得されています。

    • ベストアンサー
    • Mac
  • AppleScriptがエラーになる

    osx10.8.4  AppleScriptエディタ2.5.1 にて以下の内容でFileMaker11へテキストデータを貼付けようとしましたところ ----------------------- set dbName to "test.fp7" tell application "FileMaker Pro Advanced" activate tell database dbName set contents of field "myText" to "ABC" end tell end tell ----------------------- error "FileMaker Pro Advanced でエラーが起きました:オブジェクトが見つかりません。 ----------------------- とのエラーが出ました。 ちなみにosx10.6.8 AppleScriptエディタ2.3ではテキストは読み込まれます。 osx10.8.4 の仕様が変わったのでしょうか 2・3日前にosのバージョンアップをしましたがそれが関係していたのでしょうか。 どなたかご存知の方がおられましたらご教授下さい。

    • ベストアンサー
    • Mac
  • indesignでのapplescript

    はじめまして、indesign CS3で使用するapplescriptに関しての質問です。 自動で出力をしてくれるスクリプトを作りたいと思い、やってみたのですがうまくいきません。 色々調べて作ってみたのがこれです。 tell application "Finder" set filesInFolder to files in (choose folder) repeat with theFile in filesInFolder if name extension of theFile is "indd" then -- 拡張子を指定 set priset to "B4" -- プリントプリセットを指定 tell application "Adobe InDesign CS3" activate open theFile tell document 1 print using priset without print dialog close saving no end tell end tell end if end repeat end tell ここまではなんとかできたのですが、現段階では1階層下までのinddドキュメントしか読取ってくれません。 1見開きごとにパッケージしてできた子フォルダを一つの親フォルダにまとめることが多いので、フォルダ▶フォルダ▶.inddになります。 これでは親フォルダを指定したときに2階層下の子フォルダに分かれて入っている複数の.inddを一気に出力することができません。 何か解決策はありませんでしょうか? また、現段階に関してのご指摘もございましたらよろしくお願いします。

  • AppleScriptでpkgファイルの実行方法

    AppleScriptであるpkgファイルを実行させてインストール画面を表示させたいのですがどのように記述すればよいでしょうか。 tell application "Install" open "file.pkg" end tell ではできませんでした。 宜しくお願い致します。

    • ベストアンサー
    • Mac
  • AppleScript 添削希望

    以下のスクリプトを1回実行するとデスクトップにフォルダ「t01」ができるのですが、 2回目以降「t02」とはならず、「test」のままで止まってしまいます。 OS 10.5.8 です。どこか間違ってるのでしょうか。 tell application "Finder" duplicate folder "test" of folder "_test" of desktop to desktop with replacing try set name of folder "test" of desktop to "t01" on error try set name of folder "test" of desktop to "t02" on error try set name of folder "test" of desktop to "t03" end try end try end try end tell

    • ベストアンサー
    • Mac
  • AppleScriptでアプリケーション再起動

    表題の件について教えてください。 VNCアプリケーションなんですが、動作が不安定で、 一旦遠隔で操作して接続を切ると、 当該アプリケーションを再起動しないと繋がらなくなるものがあります。 そこで、mailのメッセージルールで、 メール受信するとAppleScriptを実行するように設定して、 当該アプリケーションを再起動するようなapplescriptを作ってみましが 上手く動作してくれません。 AppleScriptを実行とすると、「接続が無効です」とのエラーメッセージが出て、 activateのところが水色のハイライトがつきます。 どのように修正したらよいか教えて下さい。 なお、実行するOSはlion10.7.4です。 tell application "アプリケーション名" quit activate end tell

    • ベストアンサー
    • Mac