Skip to main content
Legend
March 28, 2019
解決済み

How to fast get a list of all text layers?

  • March 28, 2019
  • 返信数 1.
  • 758 ビュー

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)?

このトピックへの返信は締め切られました。
解決に役立った回答 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

SuperMerlin
SuperMerlin解決!
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-y作成者
Legend
March 28, 2019

Thank you!