我正在使用InDesign创建一些脚本来加快这个过程 我创建了一个脚本,我认为某条线应该可以工作,但InDesign不同意。
在以下的("Geen"||"None");
中失败
app.changeGrepPreferences.appliedCharacterStyle = myDoc.characterStyles.item("[Geen]"||"[None]");
我希望它更改为characterStyle [Geen]
或[None]
。取决于预定义字符样式中的可用内容。
我做错了什么?这看起来有点基础。
答案 0 :(得分:1)
不幸的是,这并不容易。如果您使用doc.characterStyles.item('foo')
,它仍然会为您提供[object CharacterStyle]
。即使是艰难也不存在。
var doc = app.activeDocument;
$.writeln(doc.characterStyles.item('foo'));
// writes [object CharacterStyle] into the console
您可以使用try{}catch(error){}
块并询问该对象的name
属性。在这种情况下,InDesign将抛出您可以捕获的错误。然后您可以回退到默认字符样式[无]
var doc = app.activeDocument;
try{
$.writeln(doc.characterStyles.item('foo').name);
}catch(e) {
$.writeln(e);
$.writeln(doc.characterStyles.item('[None]').name);
}
编辑:正如mdomino所说。您可以使用isValid
属性。
var doc = app.activeDocument;
if(doc.characterStyles.item('foo').isValid === true) {
$.writeln('doc.characterStyles.item(\'foo\') exists');
} else {
$.writeln('use doc.characterStyles.item(\'[None]\') because ');
var defaultStyle = doc.characterStyles.item('[None]');
$.writeln(defaultStyle.name + ' is ' + defaultStyle.isValid);
}