扩展脚本中的 OR 运算符
OR operator in extendscript
我正在为 InDesign 创建一些脚本来加速这个过程。
我创建了一个脚本,我认为其中的某行应该可以工作,但 InDesign 不同意。
在以下 ("Geen"||"None");
失败
app.changeGrepPreferences.appliedCharacterStyle = myDoc.characterStyles.item("[Geen]"||"[None]");
我希望它能更改为 characterStyle [Geen]
或 [None]
。取决于预定义字符样式中可用的内容。
我做错了什么?这似乎有点基本。
不幸的是,这并不容易。如果你使用 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 将抛出一个您可以捕捉到的错误。然后你可以回退到默认字符样式 [None]
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);
}
我正在为 InDesign 创建一些脚本来加速这个过程。
我创建了一个脚本,我认为其中的某行应该可以工作,但 InDesign 不同意。
在以下 ("Geen"||"None");
失败
app.changeGrepPreferences.appliedCharacterStyle = myDoc.characterStyles.item("[Geen]"||"[None]");
我希望它能更改为 characterStyle [Geen]
或 [None]
。取决于预定义字符样式中可用的内容。
我做错了什么?这似乎有点基本。
不幸的是,这并不容易。如果你使用 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 将抛出一个您可以捕捉到的错误。然后你可以回退到默认字符样式 [None]
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);
}