こんにちは。
AppleScript、InDesign、JavaScript、VBscript、PHPなんかについて書いていきます。
そのうちHPにサンプルでもあげるかも。
|
Mac OS 10.3.9でAppleScript その2「力技」。
その1で書いていた「ドロップしたフォルダの中のアイテムを数えてファイルに書き出す」AppleScriptがようやく出来た。 ファイルの読み書きやアイテムを数えるのは簡単だったけど、ドロップしたフォルダの名前を取得するのが一苦労。 シンプルにAppleScript's text item delimitersでコロンで区切ってリスト化しようと書いたのが下記。 set texdata to choose folder with prompt "保存先を指定してください" set texdata to texdata as string set OriginalDelimiters to AppleScript's text item delimiters set AppleScript's text item delimiters to {":"} set texdata to text items of texdata set c to count texdata set fname to item (c - 1) of texdata set AppleScript's text item delimiters to OriginalDelimiters これをドロップレットで、と試したんだけどうまく動かない…。 試しているうちに面倒になってRubyに処理をお任せすることに。 <AppleScriptでの記述> set fname to do shell script "ruby /Users/*****/Documents/ruby/フォルダ名取得用.rb" & space & thispath <Ruby> # AppleScriptから渡されたフルパスをinsuu1に格納 insuu1 = ARGV[0] ; #--第一引数 # :で分割してリスト化 bunkatsu = insuu1.split(/:/) # bunkatsuの最後の項目をAppleScriptに渡す print(bunkatsu[-1]) う〜ん、悩まずに実質3行で書き終わってしまった…。 まぁこれで「デスクトップにドロップしたフォルダと同名のフォルダを作る」スクリプトも書けそうだし、強引だけどいいことにしよう。 だからタイトル「力技」。 |
|
----
repeat with thisfile in theList
で取得したthisfileをstringに変換してもなぜかAppleScript's text item delimitersの対象外になるみたい。 ん〜、なんか思い違いしているのかなぁ? ----
これからもこんな風にAppleScriptとRubyを一緒に使うことが出てくると思うので、Scriptのある階層にrubyフォルダを作ってそこにrubyを入れておく仕様に変更。
これなら圧縮して配布もできるしね。 on open theList tell application "Finder" --書き込むファイル名を定義 set writename to "アイテム数" --スタートアップディスクを変数に set diskname to name of startup disk --ホームの名前(ユーザーのアカウント名)を変数に set homename to name of home repeat with thisfile in theList tell application "Finder" set mypath to (path to me) as string set myfolder to my MyFilePath(mypath) set myruby to myfolder & "ruby:フォルダ名取得用.rb" --:区切りのパスを/区切りのパスに変換 set myruby to POSIX path of myruby --ドロップしたフォルダのパスをテキスト形式に変換 set thispath to thisfile as text --フォルダ名を抜き出すためにRubyに変数を渡す set fname to do shell script "ruby" & space & myruby & space & thispath --フォルダ内のアイテム数を変数に代入 set c_item to count item of thisfile --デスクトップにwritenameというテキストファイルを作成 set writefile to open for access (diskname & ":" & "Users" & ":" & homename & ":" & "Desktop" & ":" & writename) with write permission --追記するためにテキストの終わりを取得 set aEOF to get eof of writefile try write (fname & (ASCII character 9) & c_item & (ASCII character 13)) starting at (aEOF + 1) to writefile end try close access writefile end tell end repeat display dialog "終わり" end tell end open --"Macintosh HD:Users:USERNAME:Desktop:test.scpt"を"Macintosh HD:Users:USERNAME:Desktop:"にするルーチン on MyFilePath(this_text) set y to 0 repeat with thisChar in this_text set y to y + 1 set x to the offset of thisChar in ":" if x is not 0 then set z to y end if end repeat return (text from character 1 to z of this_text) end MyFilePath |
|
|
|
AppleScriptAppleScript(アップルスクリプト)は、アップルコンピュータが開発したMac OS用のオブジェクト指向のスクリプト言語。System 7(Mac OS 7にあたる)から採用されており、今なお普及し続けている。Open Scripting Architecture|OSA プログラミング言語【2007/02/08 11:41】
|
|
| ホーム |
|

