• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

script crashes PS since latest patch. - Please help...!

Explorer ,
Jul 27, 2021 Jul 27, 2021

Copy link to clipboard

Copied

Hi all! I need your help....
Have been relying on a script for a wile now to find and replace layer names.

since the last patch on thirsday the script crashes PS.

kv43606971_0-1627390300711.png

can someone help me fix this?
here is the script:

 

#target Photoshop
app.bringToFront();
main();
function main(){
if(!documents.length) return;
var selLayers=getSelectedLayersIdx();
var selIdxNames=[];
for(var s in selLayers){
    selIdxNames.push([[Number(selLayers[s])],[getLayerNameByIndex(Number(selLayers[s]))]]);
    }
selectAllLayers();
var allLayers = getSelectedLayersIdx();
var allIdxNames=[];
for(var n in allLayers){
    allIdxNames.push([[Number(allLayers[n])],[getLayerNameByIndex(Number(allLayers[n]))]]);
    }
try{
var win = new Window( 'dialog', 'Layer Name Editor' ); 
g = win.graphics;
var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [0.5, 0.5, 0.5, 1]);
g.backgroundColor = myBrush;
win.orientation='column';
win.p1= win.add("panel", undefined, undefined, {borderStyle:"black"}); 
win.p1.preferredSize=[380,100];
win.g1 = win.p1.add('group');
win.g1.orientation = "row";
win.title = win.g1.add('statictext',undefined,'Layer Name Editor');
win.title.alignment="fill";
var g = win.title.graphics;
g.font = ScriptUI.newFont("Georgia","BOLDITALIC",22);
win.g5 =win.p1.add('group');
win.g5.orientation = "row";
win.g5.alignment='fill';
win.g5.spacing=10;
win.g5.rb1 = win.g5.add('radiobutton',undefined,'Use Selected Layers');
win.g5.rb2 = win.g5.add('radiobutton',undefined,'Use All Layers');
win.g5.rb2.value=true;
win.g10 =win.p1.add('group');
win.g10.orientation = "row";
win.g10.alignment='fill';
win.g10.rb1 = win.g10.add('radiobutton',undefined,'Prefix');
win.g10.rb2 = win.g10.add('radiobutton',undefined,'Suffix');
win.g10.rb3 = win.g10.add('radiobutton',undefined,'Remove');
win.g10.rb4 = win.g10.add('radiobutton',undefined,'Insert');
win.g10.rb5 = win.g10.add('radiobutton',undefined,'Replace');
win.g10.rb5.value=true;
win.g15 =win.p1.add('group');
win.g15.orientation = "row";
win.g15.alignment='fill';
win.g15.cb1 = win.g15.add('checkbox',undefined,'Create Snapshot');

win.stack =win.add('group');
win.stack.spacing=10;
win.stack.orientation = 'stack';
win.stack.alignment="left";

win.p2= win.stack.add("panel", undefined, undefined, {borderStyle:"black"}); //Prefix
win.p2.preferredSize=[380,100];
win.p2.visible=false; 
win.g200 =win.p2.add('group');
win.g200.orientation = "row";
win.g200.alignment='fill';
win.g200.st1 = win.g200.add('statictext',undefined,'Prefix');
win.g200.st1.preferredSize=[75,20];
win.g200.et1 = win.g200.add('edittext');
win.g200.et1.preferredSize=[200,20];

win.p3= win.stack.add("panel", undefined, undefined, {borderStyle:"black"}); //Suffix
win.p3.preferredSize=[380,100];
win.p3.visible=false;
win.g300 =win.p3.add('group');
win.g300.orientation = "row";
win.g300.alignment='fill';
win.g300.st1 = win.g300.add('statictext',undefined,'Suffix');
win.g300.st1.preferredSize=[75,20];
win.g300.et1 = win.g300.add('edittext');
win.g300.et1.preferredSize=[200,20];

win.p4= win.stack.add("panel", undefined, undefined, {borderStyle:"black"}); //Remove
win.p4.preferredSize=[380,100];
win.p4.visible=false;
win.g400 =win.p4.add('group');
win.g400.orientation = "row";
win.g400.alignment='fill';
win.g400.rb1 = win.g400.add('radiobutton',undefined,'First(n) chars');
win.g400.rb2 = win.g400.add('radiobutton',undefined,'Last(n) chars');
win.g400.rb3 = win.g400.add('radiobutton',undefined,'Range From(n)');
win.g400.rb1.value=true;
win.g410 =win.p4.add('group');
win.g410.orientation = "row";
win.g410.alignment='fill';
win.g410.et1 = win.g410.add('edittext');
win.g410.et1.preferredSize=[50,20];
win.g410.et1.onChanging = function() { 
  if (this.text.match(/[^\-\.\d]/)) { 
    this.text = this.text.replace(/[^\-\.\d]/g, ''); 
  } 
};
win.g410.st1 = win.g410.add('statictext',undefined,'Number of Chars.');
win.g410.et2 = win.g410.add('edittext');
win.g410.et2.preferredSize=[50,20];
win.g410.et2.onChanging = function() { 
  if (this.text.match(/[^\-\.\d]/)) { 
    this.text = this.text.replace(/[^\-\.\d]/g, ''); 
  } 
};
win.g410.et2.visible=false;
win.g410.st1.visible=false;
win.g400.rb1.onClick=function(){
    win.g410.et2.visible=false;
    win.g410.st1.visible=false;
}
win.g400.rb2.onClick=function(){
    win.g410.et2.visible=false;
    win.g410.st1.visible=false;
}
win.g400.rb3.onClick=function(){
    win.g410.et2.visible=true;
    win.g410.st1.visible=true;
}

win.p5= win.stack.add("panel", undefined, undefined, {borderStyle:"black"}); //Insert
win.p5.preferredSize=[380,100];
win.p5.visible=false;
win.g500 =win.p5.add('group');
win.g500.orientation = "row";
win.g500.alignment='fill';
win.g500.st1 = win.g500.add('statictext',undefined,'Insert');
win.g500.st1.preferredSize=[75,20];
win.g500.et1 = win.g500.add('edittext');
win.g500.et1.preferredSize=[200,20];
win.g510 =win.p5.add('group');
win.g510.orientation = "row";
win.g510.alignment='fill';
win.g510.st1 = win.g510.add('statictext',undefined,'At position');
win.g510.st1.preferredSize=[75,20];
win.g510.et1 = win.g510.add('edittext');
win.g510.et1.preferredSize=[50,20];
win.g510.et1.onChanging = function() { 
  if (this.text.match(/[^\-\.\d]/)) { 
    this.text = this.text.replace(/[^\-\.\d]/g, ''); 
  } 
};

win.p6= win.stack.add("panel", undefined, undefined, {borderStyle:"black"}); //Replace
win.p6.preferredSize=[380,100];
win.g600 =win.p6.add('group');
win.g600.orientation = "row";
win.g600.alignment='fill';
win.g600.st1 = win.g600.add('statictext',undefined,'Replace');
win.g600.st1.preferredSize=[75,20];
win.g600.et1 = win.g600.add('edittext');
win.g600.et1.preferredSize=[200,20];
win.g610 =win.p6.add('group');
win.g610.orientation = "row";
win.g610.alignment='fill';
win.g610.st1 = win.g610.add('statictext',undefined,'With');
win.g610.st1.preferredSize=[75,20];
win.g610.et1 = win.g610.add('edittext');
win.g610.et1.preferredSize=[200,20];
win.g620 =win.p6.add('group');
win.g620.orientation = "row";
win.g620.alignment='fill';
win.g620.cb1 = win.g620.add('checkbox',undefined,'Global');
win.g620.cb2 = win.g620.add('checkbox',undefined,'Case Insensitive');
win.g620.cb1.value=true;
win.g620.cb2.value=true;

win.g10.rb1.onClick=function(){
if(win.g10.rb1.value){
win.p2.visible=true;
win.p3.visible=false;
win.p4.visible=false;
win.p5.visible=false;
win.p6.visible=false;
}
}
win.g10.rb2.onClick=function(){
if(win.g10.rb2.value){
win.p2.visible=false;
win.p3.visible=true;
win.p4.visible=false;
win.p5.visible=false;
win.p6.visible=false;
}
}
win.g10.rb3.onClick=function(){
if(win.g10.rb3.value){
win.p2.visible=false;
win.p3.visible=false;
win.p4.visible=true;
win.p5.visible=false;
win.p6.visible=false;
}
}
win.g10.rb4.onClick=function(){
if(win.g10.rb4.value){
win.p2.visible=false;
win.p3.visible=false;
win.p4.visible=false;
win.p5.visible=true;
win.p6.visible=false;
}
}
win.g10.rb5.onClick=function(){
if(win.g10.rb5.value){
win.p2.visible=false;
win.p3.visible=false;
win.p4.visible=false;
win.p5.visible=false;
win.p6.visible=true;
}
}

win.g1000 =win.add('group');
win.g1000.orientation = "row";
win.g1000.alignment='center';
win.g1000.bu1 = win.g1000.add('button',undefined,'Process');
win.g1000.bu1.preferredSize=[150,30];
win.g1000.bu2 = win.g1000.add('button',undefined,'Cancel');
win.g1000.bu2.preferredSize=[150,30];
snapshotFlag = false;
win.g1000.bu1.onClick=function(){
if(win.g15.cb1.value && !snapshotFlag){
    snapshotFlag=true;
    snapShot();
    }
if(win.g10.rb1.value){//Prefix
    if(win.g200.et1.text == ''){
        alert("No Prefix has been entered!");
        return;
        }
    win.close(0);
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
putLayerNameByIndex( Number(lList[z][0]), win.g200.et1.text.toString() + lList[z][1].toString());
}
    }
if(win.g10.rb2.value){//suffix
     if(win.g300.et1.text == ''){
        alert("No Suffix has been entered!");
        return;
        }
    win.close(0);
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
putLayerNameByIndex( Number(lList[z][0]), lList[z][1].toString() + win.g300.et1.text.toString());
}
    }
if(win.g10.rb3.value){//Remove
    if(win.g400.rb1.value){
        if(win.g410.et1.text == ''){
            alert("No number has been entered!");
            return;
            }
         if(Number(win.g410.et1.text) <1 ){
             alert("You can't remove zero characters!");
             return;
             }
            win.close(0);
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
var n = Number(win.g410.et1.text);
var rex = "/^(.{"+ n+"})(.+)/";
putLayerNameByIndex( Number(lList[z][0]), lList[z][1].toString().match(eval(rex))[2]);
}
        }
    if(win.g400.rb2.value){
            if(win.g410.et1.text == ''){
            alert("No number has been entered!");
            return;
            }
         if(Number(win.g410.et1.text) <1 ){
             alert("You can't remove zero characters!");
             return;
             }
            win.close(0);
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
var n = Number(win.g410.et1.text);
var rex = "/(.+)(.{"+n+"}$)/";
putLayerNameByIndex( Number(lList[z][0]), lList[z][1].toString().match(eval(rex))[1]);
}
        }
    if(win.g400.rb3.value){
                if(win.g410.et1.text == '' || win.g410.et2.text == ''){
            alert("No number has been entered!");
            return;
            }
         if(Number(win.g410.et1.text) <1 || Number(win.g410.et2.text) <1 ){
             alert("You can't remove zero characters!");
             return;
             }
            win.close(0);
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
var n = Number(win.g410.et1.text);
var r = Number(win.g410.et2.text);
var rex = "/^(.{"+ n+"})(.{"+r+"})(.+)/";
var parts = lList[z][1].toString().match(eval(rex));
var newName = parts[1] + parts[3];
putLayerNameByIndex( Number(lList[z][0]), newName);
}
        }
    }
if(win.g10.rb4.value){//Insert
if(win.g500.et1.text == ''){
    alert("You have not entered a string!");
    return;
    }
if(win.g510.et1.text == ''){
    alert("You must enter a start number!");
    return;
    }
win.close(0);
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
var n = Number(win.g510.et1.text);
if(n<1) n=1;
var rex = "/^(.{"+ n+"})(.+)/";
var parts = lList[z][1].toString().match(eval(rex));
var newName = parts[1] + win.g500.et1.text.toString()+ parts[2];
putLayerNameByIndex( Number(lList[z][0]), newName);
        }
    }
if(win.g10.rb5.value){//Replace
if(win.g600.et1.text == ''){
    alert("No replace value has been entered!");
    return;
    }
    win.close(0);
if(win.g620.cb1.value && !win.g620.cb2.value) var changeFrom = new RegExp (win.g600.et1.text.toString(),"g");
if(!win.g620.cb1.value && win.g620.cb2.value) var changeFrom = new RegExp (win.g600.et1.text.toString(),"i");
if(win.g620.cb1.value && win.g620.cb2.value) var changeFrom = new RegExp (win.g600.et1.text.toString(),"gi");
if(!win.g620.cb1.value && !win.g620.cb2.value) var changeFrom = new RegExp (win.g600.et1.text.toString());
if(win.g5.rb1.value){var lList = selIdxNames;}else{var lList=allIdxNames;};
for(var z in lList){
    if(changeFrom.test( lList[z][1].toString())){
    putLayerNameByIndex( Number(lList[z][0]), lList[z][1].toString().replace(changeFrom,win.g610.et1.text.toString())); 
    }
    }
    }    
}
}catch(e){alert(e + " - " + e.line);}
win.center();
win.show();
};
function selectLayerByIndex(index,add){ 
	add = (add == undefined)  ? add = false : add;
 var ref = new ActionReference();
    ref.putIndex(charIDToTypeID("Lyr "), index);
    var desc = new ActionDescriptor();
    desc.putReference(charIDToTypeID("null"), ref );
	      if(add) desc.putEnumerated( stringIDToTypeID( "selectionModifier" ), stringIDToTypeID( "selectionModifierType" ), stringIDToTypeID( "addToSelection" ) ); 
      desc.putBoolean( charIDToTypeID( "MkVs" ), false ); 
	  try{ executeAction(charIDToTypeID("slct"), desc, DialogModes.NO );}catch(e){}
};
function getLayerNameByIndex( idx ) { 
    var ref = new ActionReference(); 
    ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "Nm  " )); 
    ref.putIndex( charIDToTypeID( "Lyr " ), idx );
    return executeActionGet(ref).getString(charIDToTypeID( "Nm  " ));
};
function selectAllLayers() {
    var desc29 = new ActionDescriptor();
        var ref23 = new ActionReference();
        ref23.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
    desc29.putReference( charIDToTypeID('null'), ref23 );
    executeAction( stringIDToTypeID('selectAllLayers'), desc29, DialogModes.NO );
};
function getSelectedLayersIdx(){ 
      var selectedLayers = new Array; 
      var ref = new ActionReference(); 
      ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
      var desc = executeActionGet(ref); 
      if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){ 
         desc = desc.getList( stringIDToTypeID( 'targetLayers' )); 
          var c = desc.count 
          var selectedLayers = new Array(); 
          for(var i=0;i<c;i++){ 
            try{ 
               activeDocument.backgroundLayer; 
               selectedLayers.push(  desc.getReference( i ).getIndex() ); 
            }catch(e){ 
               selectedLayers.push(  desc.getReference( i ).getIndex()+1 ); 
            } 
          } 
       }else{ 
         var ref = new ActionReference(); 
         ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "ItmI" )); 
         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
         try{ 
            activeDocument.backgroundLayer; 
            selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))-1); 
         }catch(e){ 
            selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))); 
         } 
     var vis = app.activeDocument.activeLayer.visible;
        if(vis == true) app.activeDocument.activeLayer.visible = false;
        var desc9 = new ActionDescriptor();
    var list9 = new ActionList();
    var ref9 = new ActionReference();
    ref9.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
    list9.putReference( ref9 );
    desc9.putList( charIDToTypeID('null'), list9 );
    executeAction( charIDToTypeID('Shw '), desc9, DialogModes.NO );
    if(app.activeDocument.activeLayer.visible == false) selectedLayers.shift();
        app.activeDocument.activeLayer.visible = vis;
      } 
      return selectedLayers; 
};
function snapShot() {
    var desc9 = new ActionDescriptor();
        var ref5 = new ActionReference();
        ref5.putClass( charIDToTypeID('SnpS') );
    desc9.putReference( charIDToTypeID('null'), ref5 );
        var ref6 = new ActionReference();
        ref6.putProperty( charIDToTypeID('HstS'), charIDToTypeID('CrnH') );
    desc9.putReference( charIDToTypeID('From'), ref6 );
    desc9.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('HstS'), charIDToTypeID('FllD') );
    executeAction( charIDToTypeID('Mk  '), desc9, DialogModes.NO );
};
function putLayerNameByIndex( idx, name ) {
     if( idx == 0 ) return;
    var desc = new ActionDescriptor();
        var ref = new ActionReference();
        ref.putIndex( charIDToTypeID( 'Lyr ' ), idx );
    desc.putReference( charIDToTypeID('null'), ref );
    desc.putBoolean( charIDToTypeID( "MkVs" ), false ); 
        var nameDesc = new ActionDescriptor();
        nameDesc.putString( charIDToTypeID('Nm  '), name );
    desc.putObject( charIDToTypeID('T   '), charIDToTypeID('Lyr '), nameDesc );
    executeAction( charIDToTypeID( 'slct' ), desc, DialogModes.NO ); 
    executeAction( charIDToTypeID('setd'), desc, DialogModes.NO );
};

 

TOPICS
Actions and scripting , Windows

Views

249

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

LEGEND , Jul 27, 2021 Jul 27, 2021

No crash for me in 22.4.3 using this script for replacing part of layers name. Where took you it from?

Votes

Translate

Translate
Adobe
LEGEND ,
Jul 27, 2021 Jul 27, 2021

Copy link to clipboard

Copied

No crash for me in 22.4.3 using this script for replacing part of layers name. Where took you it from?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 27, 2021 Jul 27, 2021

Copy link to clipboard

Copied

Thank you for testing it!!
It might be indeed something unique... 😕

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 28, 2021 Jul 28, 2021

Copy link to clipboard

Copied

LATEST

It will fail on a flat document there need to be layers.

Capture.jpg

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines