Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

272
Views
Photoshop script: output name of every selected top-level layer?

I've got an ActionReference Photoshop Javascript code working here that spits out the name of every selected layer:

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');

(I join these into a single line-delimited string at the end for use in AppleScript, so ignore that part for now).

However, this code also includes the nested layers as well (this happens when you shift-click groups of layer sets), and I'm not sure how to modify this code to ignore those lower level nested layers, and only output the list of the top-level layer names.

I'm very experienced with AppleScript, but I'm a novice at JavaScript, so go easy on me!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

I figured it out: Needed to include a line about the 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');
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!