Copy link to clipboard
Copied
Would it be possible to run an action on selected open images not just all of the open images at the time ?
Ideally I would like to batch run this saved action on my open 'Untitled' images and not apply the action to the other original images that are open at the time.
Could you please let me know if this would be achievable ? And how best to do this.
Thanks for taking the time to read my post, I welcome your thoughts.
The following script will only run the Default Action set and Molten Lead action on files that have never been saved.
/*
https://community.adobe.com/t5/photoshop-ecosystem-discussions/automate-batch-action-question/td-p/13056955
*/
#target photoshop
for (var i = 0; i < app.documents.length; i++) {
activeDocument = app.documents[i];
try {
app.activeDocument.path;
// Do nothing for previously saved files
} catch (e) {
// Run action on unsaved files
a
...
Copy link to clipboard
Copied
I expect this would take a Script, so a plain Batch would not suffice.
Depending on the situation an Action with a Conditional in a Batch might suffice, though.
Copy link to clipboard
Copied
@c.pfaffenbichler wrote:
I expect this would take a Script, so a plain Batch would not suffice.
That was my first thought, then I got stuck in infinite loops!
Depending on the situation an Action with a Conditional in a Batch might suffice, though.
Good suggestion! The invert action in this example is only applied to unsaved files, so make sure that all open files have been saved, except for the Untitled-# ones!
I'd still be interested in seeing the scripted version!
Copy link to clipboard
Copied
The following script will only run the Default Action set and Molten Lead action on files that have never been saved.
/*
https://community.adobe.com/t5/photoshop-ecosystem-discussions/automate-batch-action-question/td-p/13056955
*/
#target photoshop
for (var i = 0; i < app.documents.length; i++) {
activeDocument = app.documents[i];
try {
app.activeDocument.path;
// Do nothing for previously saved files
} catch (e) {
// Run action on unsaved files
app.doAction("Molten Lead", "Default Actions");
}
}
https://prepression.blogspot.com/2017/11/downloading-and-installing-adobe-scripts.html
Copy link to clipboard
Copied
Good suggestion! The invert action in this example is only applied to unsaved files, so make sure that all open files have been saved, except for the Untitled-# ones!
That’s exactly the »situation«, but any unsaved changes (and that might include inocuous stuff like Layer visibility changes) could cause unintended results.
A Scripting-approach could be something along these lines:
var theDocs = app.documents;
var theUnsaved = [];
for (var m = 0; m < theDocs.length; m++) {
var thisDoc = theDocs[m];
try {thisDoc.path}
catch (e) {
app.activeDocument = thisDoc;
alert (thisDoc.name+" is unsaved");
theUnsaved.push(thisDoc)
}
};
alert ("the unsaved files are \n"+theUnsaved.join("\n"));
Edit: I see you already got a Script running.
Copy link to clipboard
Copied
@c.pfaffenbichler – Thank you for sharing some code and thoughts.
Edit: I see you already got a Script running.
I forgot that a while loop should only be used when closing down documents, so I had to swap it for a for loop, but then I was spinning my wheels a bit before I got it working.