イラストレーターで配置画像の再リンクをするちょっとおせっかいなスクリプト

配置された画像を指定したフォルダ内の画像で再リンクします。
拡張子だけ違う画像が複数ある場合は、優先順位が上の拡張子がついたものを配置します。
埋め込まれた画像も可能なら入れ替えます。
おせっかいなスクリプトです。予想外の動きをするかもしれません。
事故責任でどうぞ。

#include 'c.js';//http://svn.coderepos.org//share/platform/illustrator/javascript/lib/c.js
#include 'matrixConvert.jsx';//http://d.hatena.ne.jp/kamiseto/20090502/1241251512
#include 'progressBar.js';
(function(){
var target = Folder.selectDialog ('入替画像があるフォルダを選択して下さい。');
if(!target.exists)return;
var extentions = ['eps','psd','tiff','tif','jpg','jpeg'];//priority
var extention = prompt ('ここで入力した拡張子を最優先に検索します。現在の優先順位['+extentions+']', 'psd', '拡張子を入力して下さい。');
if(extention)extentions.unshift (extention);
var searchfile = function(ext,PL){
    try{
        var cF = File(target + PL.file.toString().replace(PL.file.parent,'').replace(/\.(.+)$/,"."+ext));
        if(cF.exists)return cF;
    }catch(e){
    
    }
}

var replacePlacedItem = function(replacefile,targetPlacedItem){
        if(replacefile.constructor.name !== 'File')return;
        if(targetPlacedItem.constructor.name == 'PlacedItem')targetPlacedItem.file = replacefile;
        if(targetPlacedItem.constructor.name == 'RasterItem'){
            var pA = app.activeDocument.placedItems.add();
            try{
                pA.file = replacefile;
                pA.rotate(matrixConvert.getRotation(targetPlacedItem));
                pA.position = targetPlacedItem.position;
                pA.moveBefore(targetPlacedItem);
                pA.width = targetPlacedItem.width;
                pA.height = targetPlacedItem.height;
                targetPlacedItem.remove();
            }catch(e){
                pA.remove();
                throw(e);	
            }        
        }
    }
//c("S").f('PL').eachProgress(function(PL){extentions.each(searchfile,PL).test(0,replacePlacedItem,PL);});
c("S").f('PL','R').eachProgress(function(PL){extentions.each(searchfile,PL).test(0,replacePlacedItem,PL);});
})();