Tengo un código Javascript de Photoshop de ActionReference que funciona aquí y escupe el nombre de cada capa seleccionada:
var lyrs = []; var ref = new ActionReference(); ref.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt')); var targetLayers = executeActionGet(ref).getList(stringIDToTypeID('targetLayers')); for (var i = 0; i < targetLayers.count; i++) { var ref2 = new ActionReference(); ref2.putIndex(charIDToTypeID('Lyr '), targetLayers.getReference(i).getIndex() + 1); var desc = executeActionGet(ref2); lyrs.push(desc.getString(charIDToTypeID('Nm '))); } lyrs.join('\\n');(Los uno en una cadena delimitada por una sola línea al final para usar en AppleScript, así que ignore esa parte por ahora).
Sin embargo, este código también incluye las capas anidadas (esto sucede cuando hace Mayús y hace clic en grupos de conjuntos de capas), y no estoy seguro de cómo modificar este código para ignorar esas capas anidadas de nivel inferior y solo mostrar la lista de los nombres de las capas de nivel superior.
Tengo mucha experiencia con AppleScript, pero soy un novato en JavaScript, ¡así que no me hagas caso!
Lo descubrí: necesitaba incluir una línea sobre parentLayerID:
var ref = new ActionReference(); sTT = stringIDToTypeID; ref.putEnumerated(sTT('document'), sTT('ordinal'), sTT('targetEnum')); var targetLayers = executeActionGet(ref).getList(sTT('targetLayers')); var lyrs = []; for (var i = 0; i < targetLayers.count; i++) { var ref2 = new ActionReference(); ref2.putIndex(sTT('layer'), targetLayers.getReference(i).getIndex() + 1); var desc = executeActionGet(ref2); desc.getInteger(sTT('parentLayerID')) < 0 && lyrs.push(desc.getString(sTT('name'))); } lyrs.join('\\n');