Answered
Replace only selected smart objects with images from the bridge:
Hello everyone!
Friends I'm having trouble creating a script that has the purpose of replacing the selected smart objects with images from the bridge according to their selection order, but the result is frustrating, only the last image is loaded for all smart objects. All help is valid.Thanks.
Here are the prints:

Script here:
#target photoshop
app.bringToFront();
var selLayers=[];
selLayers= getSelectedLayersIdx();
for (var a in selLayers){
makeActiveByIndex( selLayers[a], false );
PicturesBRIDGE();
}
function PicturesBRIDGE(){
var bridgeFileList =[];
fileList =GetFilesFromBridge();
if(i >= fileList.length)
var bridgeFile= File(fileList[i]);
for(i=0;i<fileList.length;i++){
replaceSmart( fileList[i]);
//open( fileList[i] );
}
}
function replaceSmart(file){
function c2t(s){return app.charIDToTypeID(s);};
function s2t(s){return app.stringIDToTypeID(s);};
var d = new ActionDescriptor();
d.putPath( c2t( "null" ), new File(file));
executeAction( s2t( "placedLayerReplaceContents" ), d, DialogModes.NO );
}
function GetFilesFromBridge() {
function script(){
var fL = app.document.selections;
var tF=[];
for(var a in fL){
if(fL[a].type =='file'){
tF.push(new File(encodeURI(fL[a].spec.fsName)));
}
}
return tF.toSource();
}
var fileList;
var bt = new BridgeTalk();
bt.target = "bridge";
bt.body = "var ftn = " + script.toSource() + "; ftn();";
bt.onResult = function( inBT ) { fileList = eval( inBT.body ); }
bt.onError = function( inBT ) { fileList = new Array(); }
bt.send(8);
bt.pump();
if ( undefined == fileList ) fileList = new Array();
return fileList;
};
function makeActiveByIndex( idx, visible ){
try{
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIndex(charIDToTypeID( "Lyr " ), idx)
desc.putReference( charIDToTypeID( "null" ), ref );
desc.putBoolean( charIDToTypeID( "MkVs" ), visible );
executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
}
catch(e){}
};
function getSelectedLayersIdx(){
var selectedLayers = new Array;
var ref = new ActionReference();
ref.putProperty(charIDToTypeID('Prpr'), stringIDToTypeID('targetLayers'));
ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
var desc = executeActionGet(ref);
if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){
desc = desc.getList( stringIDToTypeID( 'targetLayers' ));
var c = desc.count;
var selectedLayers = new Array();
for(var i=0;i<c;i++){
try{ activeDocument.backgroundLayer; selectedLayers.push( desc.getReference( i ).getIndex() );
}catch(e){ selectedLayers.push( desc.getReference( i ).getIndex()+1 );}}
}else{
var ref = new ActionReference();
ref.putProperty( charIDToTypeID('Prpr') , charIDToTypeID( 'ItmI' ));
ref.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
try{ activeDocument.backgroundLayer;
selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( 'ItmI' ))-1);
}catch(e){ selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( 'ItmI' )));}
var vis = app.activeDocument.activeLayer.visible;
if(vis == true) app.activeDocument.activeLayer.visible = false;
var desc9 = new ActionDescriptor();
var list9 = new ActionList();
var ref9 = new ActionReference();
ref9.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
list9.putReference( ref9 );
desc9.putList( charIDToTypeID('null'), list9 );
executeAction( charIDToTypeID('Shw '), desc9, DialogModes.NO );
if(app.activeDocument.activeLayer.visible == false) selectedLayers.shift();
app.activeDocument.activeLayer.visible = vis; } return selectedLayers;};
function selectLayerByIndex(index,add){
var ref = new ActionReference();
ref.putIndex(charIDToTypeID('Lyr '), index);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID('null'), ref );
if(add) desc.putEnumerated( stringIDToTypeID( 'selectionModifier' ), stringIDToTypeID( 'selectionModifierType' ), stringIDToTypeID( 'addToSelection' ) );
desc.putBoolean( charIDToTypeID( 'MkVs' ), false );
try{ executeAction(charIDToTypeID('slct'), desc, DialogModes.NO );}catch(e){}
}; 