とりあえず AppleScript のみで書き換えてみました。
最後の collectArtToLocal ルーチンを置き換えてみてください。
on collectArtToLocal(myitems, theFilepath)
tell application "Finder" to set myillfilecontainer to container of theFilepath
repeat with myitem in myitems
tell application "Adobe Illustrator" to set myfile to (file path of myitem)
tell application "Finder"
set myfilename to (name of myfile)
set folderContent to every item of folder myfolder
repeat with myFileItem in folderContent
if (myfilename = (name of myFileItem)) then
set matchFlag to 1
exit repeat
else
set matchFlag to 0
end if
end repeat
if (matchFlag = 0) then set mynewfile to (duplicate myfile to myillfilecontainer)
end tell
end repeat
end collectArtToLocal
ファイル書き出し先フォルダの全内容といちいち照合して確認していますので、ファイル数が多くなると時間がかかるだろうと思いますが、一応動くはずです。
スクリプトの最後から5行目前後
if not ((file myfilename of myillfilecontainer) exists) then
set mynewfile to (duplicate myfile to myillfilecontainer)
end if
の部分に問題があるようです。ここで、取り出したファイルが既に存在するかどうかをチェックしているのですが、どうもこの if file exists の判定にバグがあるようで、0の個数を区別してないみたいですね。0.jpg と 00.jpg, 000.jpg は同じファイルとして認識し、1.jpg, 11.jpg, 111.jpg は違うファイルとして認識します。
http://lists.apple.com/archives/applescript-users/2007/May/msg00063.html
で同じ問題が報告されてます。
AppleScript 自体の問題のようなので解決は難しいのですが、
対症療法としては
(1)判定をスキップする:上記の部分の if not... の行と end if の行をコメントアウトしてしまうわけです。配置されたファイルが違うものばかりならこれで問題なく動きますが、同名のファイルが2個以上配置されているとエラーが出てスクリプトが停止します。
(2)ファイル名に 0 を含まないようにする:問題が起きるのはとりあえず 0 だけのようなので、配置するファイル名に気をつければ一応回避できます。
根治療法としては
(3)別のスクリプト系に書き換える:ファイルの存在確認の部分だけでも perl script などに書き換えて AppleScript から呼び出すようにすれば問題は解決するはずです。
お礼
出来ましたー!ありがとうございます!! 思ったほど時間もかからなかったので、このScriptを拝借させていただきます。 これでファイル名を細かくチェックしなくても済むようになりました。 本当にありがとうございました! 参考というか、完全に助けていただいてしまいましたが、ずっとわからなかった事が解決してすごくうれしいです!