• 締切済み

applescript スクリプトエディタとアプリケーションで実行結果が異なる

クリップボードの文字列を検索置換しようとしています。 \\hoge\hogehoge→/Volumes/hogehogeのように。 ソースは下記なんですが、スクリプトエディタ上で実行すると 期待された結果が返ってくるのですが、アプリケーションとして 保存し、デスクトップからアプリケーションを実行すると 置換二つ目が処理されず、なぜか置換一つ目しか処理されません。 どのようにしたらよいでしょうか。 set theText to get the clipboard set backslash to ASCII character 128 set searchWd to backslash if (offset in theText of searchWd) = 0 then else set theText to my replaceTxt(theText, backslash, "/") --置換一つ目 set theText to my replaceTxt(theText, "//hoge", "/Volumes") --置換二つ目 display dialog theText end if on replaceTxt(myText, searchTxt, replaceTxt) set oldDel to AppleScript's text item delimiters set AppleScript's text item delimiters to searchTxt set myText to every text item of myText set AppleScript's text item delimiters to replaceTxt set myText to myText as string set AppleScript's text item delimiters to oldDel return myText end replaceTxt

みんなの回答

  • kapura
  • ベストアンサー率50% (48/95)
回答No.1

スクリプトエディタでは実行できているようですし、基本的にプログラムには問題ないと思います。既にやられているかもしれませんが、例えば1つ目の置換後にtheTextがどうなっているのか見てみれば、処理の違いがわかって対策も取れるのではないでしょうか (実行結果が異なる謎は別として問題は解決する)。 日本語環境や文字コードの微妙な問題とか、Mac OS X 10.5 Leopardで実行していてAppleScriptの仕様か何か変わったのが影響しているような気もしますが、私にはよくわかりません # AppleScriptの質問は詳しい方がいるApple Discussionsやメーリングリスト等に質問した方がより適確な回答が得られる気がします Mac OS X Technologies > AppleScript http://discussions.info.apple.co.jp/ http://discussions.apple.com/forum.jspa?forumID=724

参考URL:
http://d.hatena.ne.jp/E-WA/20060210/1139554011

関連するQ&A