Skip to content

Instantly share code, notes, and snippets.

@andrewebdev
Created December 23, 2016 11:27
Show Gist options
  • Save andrewebdev/c14d8229256ac55032c77f01812f9bf3 to your computer and use it in GitHub Desktop.
Save andrewebdev/c14d8229256ac55032c77f01812f9bf3 to your computer and use it in GitHub Desktop.
//#target photoshop
app.bringToFront();
activeDocument.suspendHistory('Raster SOs', 'main()');
function main() {
if(!documents.length) return;
selectAllLayers();
var selectedLayers = getSelectedLayersIdx();
for(var a in selectedLayers) {
if (hasSmartObject(Number(selectedLayers[a]))) {
makeActiveByIndex(Number(selectedLayers[a]),false);
executeAction(stringIDToTypeID("rasterizePlaced"), undefined, DialogModes.NO);
}
}
}
function hasSmartObject(idx) {
var ref = new ActionReference();
ref.putProperty( charIDToTypeID("Prpr") , stringIDToTypeID("smartObject"));
ref.putIndex(charIDToTypeID("Lyr "), idx);
var desc = executeActionGet(ref);
if(desc.hasKey(stringIDToTypeID('smartObject'))) return true; else return false;
}
function makeActiveByIndex(idx, visible) {
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);
};
function getSelectedLayersIdx() {
var selectedLayers = new Array;
var ref = new ActionReference();
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")));
}
}
return selectedLayers;
};
function selectAllLayers() {
var desc29 = new ActionDescriptor();
var ref23 = new ActionReference();
ref23.putEnumerated(
charIDToTypeID('Lyr '),
charIDToTypeID('Ordn'),
charIDToTypeID('Trgt')
);
desc29.putReference(charIDToTypeID('null'), ref23);
executeAction(stringIDToTypeID('selectAllLayers'), desc29, DialogModes.NO);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment