重复工作烦恼多,脚本开发解忧愁。
PS插件来助阵,自动操作省时力。
起因:工作中的需求。。。在重复的工作中,我发现部分重复的工作流程可能可以利用程序自动完成。于是去了解了一下如何自动化操作Photoshop。一开始我使用的是PS的“动作”功能,但发现它不太能满足工作中的需求。于是我去搜索PS插件的开发,了解到PS插件开发JSX是基于JavaScript的,这唉~ 这不就巧了,我正好会一点js。
例如,在我的工作流中需要将部分文字图层改为特定的内容;我发现哪些文字也会在文件名中体现,因此就有了下面这个脚本:
(function () {
var doc = app.activeDocument;
var regex = / /;
var newText = doc.name.match(regex);
if (newText && newText.length === 1) {
// 更新文本内容
setTextAll(doc, newText[0]);
} else {
alert("未修改文本!" + newText)
}
function setTextAll(doc, t) {
var layers = doc.layers;
for (var i = 0; i < layers.length; i++) {
var currLayer = layers[i]
if (currLayer.kind === LayerKind.TEXT) {
if (currLayer.textItem.contents.search(/ /) !== -1) {
// currLayer.textItem.contents = t;
var tt = currLayer.textItem.contents
currLayer.textItem.contents = tt.replace(/ /, t)
}
continue
} else if (currLayer.typename == 'LayerSet') {
setTextAll(currLayer, t)
}
}
}
})()
这很好理解,就是通过正则将特定内容替换。
后来我又了解到可以说是最有用的一个API。
app.doAction("action", "actionSet");
在当脚本无法完成需求时,就将其录制为动作;然后在脚本中调用。
….
………..
据我所知,JSX遵循ECMAScript3标准,这意味着它与JavaScript有许多不同之处,不支持JavaScript的新特性和语法,例如:let
、箭头函数等。。。。
emmmmmmm………
就写到这吧。。。
end