Mac OS 10.3.9でAppleScript その2「力技」
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行で書き終わってしまった…。

まぁこれで「デスクトップにドロップしたフォルダと同名のフォルダを作る」スクリプトも書けそうだし、強引だけどいいことにしよう。
だからタイトル「力技」。
【2007/01/15 15:06 】 | AppleScript | コメント(2) | トラックバック(1) | page top↑
<<InDesignでJavaScript その11 | ホーム | 効果の程はわかりませんが>>
コメント
----
repeat with thisfile in theList
で取得したthisfileをstringに変換してもなぜかAppleScript's text item delimitersの対象外になるみたい。
ん〜、なんか思い違いしているのかなぁ?
by:偽善者こうちゃん | URL | #-【2007/01/15 16:35】 [ 編集] | page top↑
----
これからもこんな風に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


by:偽善者こうちゃん | URL | #-【2007/01/15 20:18】 [ 編集] | page top↑
コメントの投稿














管理者にだけ表示を許可する

トラックバック
プログラミング言語AppleScriptについて
AppleScriptAppleScript(アップルスクリプト)は、アップルコンピュータが開発したMac OS用のオブジェクト指向のスクリプト言語。System 7(Mac OS 7にあたる)から採用されており、今なお普及し続けている。Open Scripting Architecture|OSA プログラミング言語【2007/02/08 11:41】
| ホーム |