Skip to main content
Legend
March 28, 2019
Answered

How to fast get a list of all text layers?

  • March 28, 2019
  • 1 reply
  • 758 views

Hello!

How to get a list of ids all text layers ?

Not through DOM (elementary, a cycle with the condition if (doc.layers.kind == "LayerKind.TEXT"), but very slowly for documents with a large number of layers), but through the action manager (AAM)?

This topic has been closed for replies.
Correct answer SuperMerlin

alert(getTextLayerIDs());

function getTextLayerIDs(){  

   var ref = new ActionReference();  

   ref.putProperty( charIDToTypeID('Prpr') , charIDToTypeID('NmbL'));

   ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );  

   var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) +1;  

   var Texts=[]; 

try{ 

    activeDocument.backgroundLayer; 

var i = 0; }catch(e){ var i = 1; }; 

   for(i;i<count;i++){  

       if(i == 0) continue; 

        ref = new ActionReference();  

        ref.putIndex( charIDToTypeID( 'Lyr ' ), i ); 

        var desc = executeActionGet(ref);   

        var ID = desc.getInteger(stringIDToTypeID( 'layerID' )); 

         if( desc.hasKey( stringIDToTypeID( 'textKey' ))) Texts.push(ID);

        }

    return Texts

};

1 reply

SuperMerlin
SuperMerlinCorrect answer
Inspiring
March 28, 2019

alert(getTextLayerIDs());

function getTextLayerIDs(){  

   var ref = new ActionReference();  

   ref.putProperty( charIDToTypeID('Prpr') , charIDToTypeID('NmbL'));

   ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );  

   var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) +1;  

   var Texts=[]; 

try{ 

    activeDocument.backgroundLayer; 

var i = 0; }catch(e){ var i = 1; }; 

   for(i;i<count;i++){  

       if(i == 0) continue; 

        ref = new ActionReference();  

        ref.putIndex( charIDToTypeID( 'Lyr ' ), i ); 

        var desc = executeActionGet(ref);   

        var ID = desc.getInteger(stringIDToTypeID( 'layerID' )); 

         if( desc.hasKey( stringIDToTypeID( 'textKey' ))) Texts.push(ID);

        }

    return Texts

};

jazz-yAuthor
Legend
March 28, 2019

Thank you!