Here is a script you can use without any dialog or prompt. Target the layers in the document and target the action in the action Palette then run the script. After running the script you can target an other action and run the script agin to play other actions on the layers the actions though must not delete a layer they are played on.
// JJMack
#target photoshop
var s2t = stringIDToTypeID;
if (app.documents.length > 0) main();
function main() {
try {
var selectedLayerID = new Array;
selectedLayerID = get_selected_layers_id();
if (selectedLayerID=="") {alert("No Selected Layers"); return;}
selectedAtn = getSelecteAction();
if (selectedAtn=="") {alert("No Action Selected"); return;}
for (var i = 0; i < selectedLayerID.length; i++) {
selectLayerByID(selectedLayerID[i])
playAction(selectedAtn);
}
add = false;
for (var i = 0; i < selectedLayerID.length; i++) {
selectLayerByID(selectedLayerID[i],add)
add=true;
}
}
catch(e) { alert(e + ': on line ' + e.line, 'Photoshop Error', true); }
}
function get_selected_layers_id() {
try {
var r = new ActionReference();
r.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("targetLayers"));
r.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
var d = executeActionGet(r);
if (!d.hasKey(stringIDToTypeID("targetLayers"))) {
var r = new ActionReference();
r.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("layerID"));
r.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
return [ executeActionGet(r).getInteger(stringIDToTypeID("layerID")) ];
}
var list = d.getList(stringIDToTypeID("targetLayers"));
if (!list) return null;
var n = 0;
try { activeDocument.backgroundLayer } catch (e) { n = 1; }
var len = list.count;
var selected_layers = new Array();
for (var i = 0; i < len; i++) {
try {
var r = new ActionReference();
r.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("layerID"));
r.putIndex( charIDToTypeID("Lyr "), list.getReference(i).getIndex() + n);
selected_layers.push(executeActionGet(r).getInteger(stringIDToTypeID("layerID")));
}
catch (e) { _alert(e); return null; }
}
return selected_layers;
}
catch (e) { alert(e); return null; }
}
function get_layer_by_id(id, doc_id) {
try {
var doc;
if (doc_id == undefined) doc = activeDocument;
else {
for (var i = 0; i < documents.length; i++) {
if (documents[i].id == doc_id) {
doc = documents[i];
break;
}
}
}
if (doc == undefined) { alert("Bad document " + doc_id); return null; }
var r = new ActionReference();
r.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("json"));
if (doc_id == undefined) r.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
else r.putIdentifier(charIDToTypeID("Dcmn"), doc_id);
eval("var json = " + executeActionGet(r).getString(stringIDToTypeID("json")));
if (json == undefined) return null;
var set = new Array();
function search_id(layers, id) {
for (var i = 0; i < layers.length; i++) {
if (layers[i].id == id) { set.push(i); return true; }
}
for (var i = 0; i < layers.length; i++) {
if (layers[i].layers) {
if (search_id(layers[i].layers, id)) { set.push(i); return true; }
}
}
}
if (search_id(json.layers, id)) {
var ret = doc.layers;
for (var i = set.length-1; i > 0; i--) { ret = ret[set[i]].layers;}
return ret[set[0]];
}
return null;
}
catch (e) { alert(e); }
}
// based on code by mike hale, via paul riggott;
function selectLayerByID(id,add){
add = undefined ? add = false:add
var ref = new ActionReference();
ref.putIdentifier(charIDToTypeID("Lyr "), id);
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){ alert(e.message); }
};
function getSelecteAction() {
r = new ActionReference();
r.putEnumerated(s2t('action'), s2t('ordinal'), s2t('targetEnum'));
try {
var atn = executeActionGet(r).getInteger(s2t('itemIndex')),
set = executeActionGet(r).getInteger(s2t('parentIndex'));
}
catch(e) { return ""; }
r = new ActionReference();
r.putIndex(s2t('action'), atn);
r.putIndex(s2t('actionSet'), set);
d = new ActionDescriptor();
d.putReference(s2t('target'), r);
return d;
}
function playAction(atn) {
try { executeAction(s2t('play'), atn) } catch (e) { alert(e) }
}
... View more