Save destination folder Photoshop Javascript
08:20 07 Mar 2017

I'm currently trying to make an addition to this Photoshop script, (the script currently grabs a number of image files from a folder and replaces the content of a smart object and saves individual jpgs out):

#target photoshop
if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var theName= myDocument.name.match(/(.*)\.[^\.]+$/)[1];
var thePath = myDocument.path;
var theLayer = myDocument.activeLayer;
// jpg options;
var jpgopts = new JPEGSaveOptions();
jpgopts.embedProfile = true;
jpgopts.formatOptions = FormatOptions.STANDARDBASELINE;
jpgopts.matte = MatteType.NONE;
jpgopts.quality = 8;

// check if layer is smart object;

if (theLayer.kind != "LayerKind.SMARTOBJECT") {alert ("selected layer is not a smart object")}
else {
// select files;

if ($.os.search(/windows/i) != -1) {var theFiles = File.openDialog ("please select files", "*.psd;*.tif;*.jpg", true)}
else {

//var theFiles = File.openDialog ("please select files", getFiles, true)};

var theFolder = Folder.selectDialog ("select folder");
if (theFolder) {
var theFiles = theFolder.getFiles(/\.(jpg|tif|eps|psd|png)$/i)
} else {
var theFiles = File.openDialog ("please select files", getFiles, true)};
};
if (theFiles) {

// work through the array;

          for (var m = 0; m < theFiles.length; m++) {

// replace smart object;

                    theLayer = replaceContents (theFiles[m], theLayer);
                    var theNewName = theFiles[m].name.match(/(.*)\.[^\.]+$/)[1];

//save jpg;

                    myDocument.saveAs((new File(thePath+"/"+theName+"_"+theNewName+".jpg")),jpgopts,true);
                    }
          }
}
};

////// get psds, tifs and jpgs from files //////

function getFiles (theFile) {
     if (theFile.name.match(/\.(psd|tif|png)$/i) != null || theFile.constructor.name == "Folder") {
          return true
          };
     };

////// replace contents //////

function replaceContents (newFile, theSO) {
app.activeDocument.activeLayer = theSO;

// =======================================================

var idplacedLayerReplaceContents = stringIDToTypeID( "placedLayerReplaceContents" );
    var desc3 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    desc3.putPath( idnull, new File( newFile ) );
    var idPgNm = charIDToTypeID( "PgNm" );
    desc3.putInteger( idPgNm, 1 );
executeAction( idplacedLayerReplaceContents, desc3, DialogModes.NO );
return app.activeDocument.activeLayer
};

What i'm looking to do is incorporate a way to open up a dialogue which would allow me to select a destination folder for the saved files, currently it saves the files in the same folder as the open psd.

Hope this makes sense!

Thanks in advance,

Rik

javascript photoshop photoshop-script