我有一个带有多个PSD文件的PSD Web模板,我需要在所有这些文件中替换一个关键字。如果我使用内置的Find&替换它只会一次替换一个PSD文件,而且它不会替换智能对象中的文本。
是否有任何此类脚本可以帮助从PSD(也包括文件夹中的多个PSD)中的任何地方(包括智能对象)替换关键字?
我在这里找到的最近的是Find and replace text in multiple Photoshop files?
var dir = new Folder('/c/temp')
var files = dir.getFiles("*.psd");
for (var i = 0; i < files.length; i++) {
var doc = app.open(files[i]);
for (var j= 0; j < doc.artLayers.length; j++) {
var lyr = doc.artLayers[j];
if (lyr.kind == LayerKind.TEXT) {
var lyr = doc.artLayers[j];
lyr.textItem.contents = lyr.textItem.contents.replace("search","replace");
}
}
doc.close(SaveOptions.SAVECHANGES)
}
但由于某种原因,该脚本会打开PSD文件,然后关闭它而不进行任何更改。我尝试一次播放一行脚本,然后转到第10行(if (lyr.kind == LayerKind.TEXT) {
)并循环回到第7行(for (var j= 0; j < doc.artLayers.length; j++) {
)。
答案 0 :(得分:0)
至少在上一版本的Photoshop I脚本中,智能对象不是DOM的一部分 - 您必须使用scriptlistener代码来访问这些对象的内容。
因此,以下代码段应该开始编辑智能对象:
var id401 = stringIDToTypeID( "placedLayerEditContents" );
var desc24 = new ActionDescriptor();
executeAction( id401, desc24, DialogModes.NO );
从那里你需要遍历新活动文档中的所有图层,这些图层应该包含智能对象的内容,根据需要进行修改并保存&amp;关闭它会将活动文档返回到原始文档。根据智能对象的嵌套方式,您可能需要多次执行此操作。