Javascript для изменения имени первого слоя в фотошопе, не зная имени - PullRequest
0 голосов
/ 09 января 2019

Не совсем нашел то, что искал в поиске, поэтому просил помощи. У меня есть Javascript, который будет зацикливать группу изображений и складывать их в Photoshop. Хотите переименовать слои по мере их поступления. Кажется, что имя первого слоя всегда называется «Слой 0», поэтому я смог выбрать и изменить его с помощью следующего:

var doc = app.activeDocument;
doc.activeLayer = doc.artLayers.getByName("Layer 0");
// Execute Action
    try {
              var currentName = "Layer 0";
                    var newName = "Base_color";
          var currentLayer = doc.activeLayer;
          if (currentLayer.name == currentName) {
                    currentLayer.name = newName;
          };
catch (e) {
      alert('error’);
    }

Некоторые из моих коллег не могут запустить скрипт, потому что их имя первого слоя не «Layer 0», а «RGBA» (что приводит к сбою скрипта). Вместо того, чтобы делать оператор OR с «RGBA», я хотел бы создать код для изменения имени первого слоя независимо от того, как он назван, чтобы сохранить его защищенным от ошибок.

Попытка что-то вроде этого:

var doc = app.activeDocument;
var firstlayername = app.activeDocument.activeLayer.name;
doc.activeLayer = firstlayername;
// Execute Action
    try {
          var currentName = firstlayername;
          var newName = "Base_color";
          var currentLayer = doc.activeLayer;
          if (currentLayer.name == currentName) {
                    currentLayer.name = newName;
          };
catch (e) {
      alert('error’);
    }

Не могу заставить его работать. Есть ли способ получить имя первого слоя, перенесенное в Photoshop, не зная его, и изменить его?

Спасибо!

Вот мой цикл:

// Stack images in order of numerical import. Remove all ending numbers.
while(app.documents.length>1){  
app.activeDocument = app.documents[1];  
var layerName = decodeURI(activeDocument.name).replace(/[0-9]*\....$/,'');  
activeDocument.activeLayer.duplicate(documents[0]);  
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);  
activeDocument.activeLayer.name = layerName;  
}; 

1 Ответ

0 голосов
/ 09 января 2019

Чтобы переименовать слой bottom :

var layers = app.activeDocument.artLayers;
var layer = layers[layers.length - 1];
layer.name = "Test name";

Обратите внимание, что это не обязательно первый слой для того, чтобы слои были введены.

...