but, but 🙂 can you make it to work for each layer when selected multiple layers?
Try this:
#target photoshop
function main() {
///// Process selected layers - from jazz-y /////
var s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(s2t('property'), p = s2t('targetLayersIDs'));
r.putEnumerated(s2t('document'), s2t('ordinal'), s2t('targetEnum'));
var lrs = executeActionGet(r).getList(p),
sel = new ActionReference();
for (var i = 0; i < lrs.count; i++) {
sel.putIdentifier(s2t('layer'), p = lrs.getReference(i).getIdentifier(s2t('layerID')));
(r = new ActionReference()).putIdentifier(s2t('layer'), p);
(d = new ActionDescriptor()).putReference(s2t("target"), r);
executeAction(s2t('select'), d, DialogModes.NO);
//////////
var layerName = activeDocument.activeLayer.name;
setFromLayer("[Merge]" + layerName);
setFromLayer("[Bone]" + layerName);
///// Functions /////
function setFromLayer(layNme) {
function s2t(s) {
return app.stringIDToTypeID(s);
}
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
var reference = new ActionReference();
var reference2 = new ActionReference();
reference.putClass(s2t("layerSection"));
descriptor.putReference(s2t("null"), reference);
reference2.putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
descriptor.putReference(s2t("from"), reference2);
descriptor2.putString(s2t("name"), layNme);
descriptor.putObject(s2t("using"), s2t("layerSection"), descriptor2);
executeAction(s2t("make"), descriptor, DialogModes.NO);
}
}
}
app.activeDocument.suspendHistory("Undo Script", "main()");