This script merges all selected layer groups into flatten layers.
- Layer Sets should be visible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// Layer Sets should be visible // This script merges all selected layer groups into flatten layers. #target photoshop cTID = function(s) { return app.charIDToTypeID(s); }; sTID = function(s) { return app.stringIDToTypeID(s); }; var doc = app.activeDocument; var resultLayers=[]; function Select_Layer(layername) { var desc1 = new ActionDescriptor(); var ref1 = new ActionReference(); ref1.putName(cTID('Lyr '), layername); desc1.putReference(cTID('null'), ref1); desc1.putBoolean(cTID('MkVs'), false); var list1 = new ActionList(); list1.putInteger(1); desc1.putList(cTID('LyrI'), list1); executeAction(cTID('slct'), desc1, DialogModes.NO); }; function getSelectedLayers(){ try{ var idGrp = stringIDToTypeID( "groupLayersEvent" ); var descGrp = new ActionDescriptor(); var refGrp = new ActionReference(); refGrp.putEnumerated(charIDToTypeID( "Lyr " ),charIDToTypeID( "Ordn" ),charIDToTypeID( "Trgt" )); descGrp.putReference(charIDToTypeID( "null" ), refGrp ); executeAction( idGrp, descGrp, DialogModes.NO ); for (var ix=0;ix<app.activeDocument.activeLayer.layers.length;ix++){resultLayers.push(app.activeDocument.activeLayer.layers[ix])} var id8 = charIDToTypeID( "slct" ); var desc5 = new ActionDescriptor(); var id9 = charIDToTypeID( "null" ); var ref2 = new ActionReference(); var id10 = charIDToTypeID( "HstS" ); var id11 = charIDToTypeID( "Ordn" ); var id12 = charIDToTypeID( "Prvs" ); ref2.putEnumerated( id10, id11, id12 ); desc5.putReference( id9, ref2 ); executeAction( id8, desc5, DialogModes.NO ); } catch (err) { } return resultLayers; } function Merge_Group() { try{ executeAction(sTID('mergeLayersNew'), undefined, DialogModes.NO);} catch (err) { } return; } var selectedLayers = []; selectedLayers = getSelectedLayers(); var layergroupamount = getSelectedLayers().length; for (var i=0; i<layergroupamount;i++) { Select_Layer(selectedLayers[i].name); Merge_Group(); } |
Another script from Adobe Forum;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
function sTT(v) {return stringIDToTypeID(v)} $.level = 0 function R() {return ref = new ActionReference()} arr = [] function DoL(v) {R().putEnumerated(sTT(v), sTT('ordinal'), sTT('targetEnum'))} function bGrnd(v) {R().putIndex(sTT('layer'), v)} function SC(v) { return typeIDToStringID((dsc = executeActionGet(ref)) .getEnumerationValue(sTT(lS = 'layerSection'))) == lS + v } function sNL() { DoL('layer'); (dsc = new ActionDescriptor()).putReference(sTT('null'), ref) executeAction(sTT('selectNoLayers'), dsc, DialogModes.NO) } function mLN(v) { R().putIdentifier(sTT('layer'), v); (dsc = new ActionDescriptor()).putReference(sTT('null'), ref) dsc.putBoolean(sTT('makeVisible'), true) executeAction(sTT('select'), dsc, DialogModes.NO) executeAction(sTT('mergeLayersNew'), undefined, DialogModes.NO) } function prcs(v1, v2) { bGrnd(idx = v1), lID = executeActionGet(ref).getInteger(sTT('layerID')) if (SC('Start')) { bGrnd(idx - 1); if (SC('Content')) v2 ? arr.push(lID) : (sNL(), mLN(lID)) } } try{ R().putIdentifier(sTT('layer'), 1) bG = !(executeActionGet(ref)) .getBoolean(sTT('background')) } catch (err) {bG = 1} DoL('document'), tL = sTT('targetLayers') if ((dsc = executeActionGet(ref)).hasKey(tL)) { for(lst = dsc.getList(tL), i = 0; i < lst.count;) { prcs(lst.getReference(i++).getIndex() + bG, true) } sNL(); for(i = 0; i < arr.length; i++) mLN(arr[i]<i>)</i> } else { DoL('layer'), prcs(executeActionGet(ref) .getInteger(sTT('itemIndex')) - !bG, false) } |