Javascript在不知道名称的情况下在Photoshop中更改第一层名称

时间:2019-01-09 17:19:07

标签: javascript photoshop

在搜索中找不到我要找的东西,因此寻求帮助。 我有一个Javascript,它将在一组图像中循环并将它们堆叠在Photoshop中。想要在引入图层时对其进行重命名。第一个图层名称始终似乎被称为“ Layer 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”(这会使脚本崩溃)。 我想创建代码来更改第一层的名称,而不用使用“ RGBA”执行OR语句,而无论其名称如何,以帮助保持其防错性。

尝试这样的事情:

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 :(得分:0)

要重命名底部层:

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

请注意,这不一定是引入这些层的第一层。