我需要通过脚本替换 Photoshop 模板中的文本元素。当它是常规文件时,一切正常。但如果是使用画板的项目,我无法选择要更改的活动图层。图层名称是固定的,我只想通过名称来引用它们,但无论我如何搜索,我都找不到方法。
这是我访问普通文件中的图层的方式:
#target photoshop;
var fileRef = new File("I:/ps15.psd");
if (fileRef.exists) {
app.open(fileRef); //open file
activeDocument.activeLayer = activeDocument.artLayers.getByName("layer_1"); //find the layer with the name I want
activeDocument.activeLayer.textItem.contents = "Hi!"; //text replacement
app.activeDocument.close(SaveOptions.SAVECHANGES); //close file
} else { alert("File not found"); }
我找到了确定图层是否是画板的函数,但我一直无法弄清楚如何选择其中的活动图层。
我认为这段代码可以帮助你:
#target photoshop;
var fileRef = new File("I:/ps15.psd");
if (fileRef.exists) {
app.open(fileRef);
var layerName = "layer_1";
var newText = "Hi!";
var targetLayer = findLayerByNameInArtboards(activeDocument, layerName);
if (targetLayer) {
targetLayer.textItem.contents = newText;
app.activeDocument.save();
app.activeDocument.close(SaveOptions.SAVECHANGES);
} else {
alert("Layer not found: " + layerName);
}
} else {
alert("File not found");
}
function findLayerByNameInArtboards(document, layerName) {
for (var i = 0; i < document.layerSets.length; i++) {
var layerSet = document.layerSets[i];
for (var j = 0; j < layerSet.artLayers.length; j++) {
var layer = layerSet.artLayers[j];
if (layer.name === layerName) {
return layer;
}
}
}
return null;
}