extendcript中的OR运算符

时间:2017-04-13 12:04:52

标签: javascript operators extendscript

我正在使用InDesign创建一些脚本来加快这个过程 我创建了一个脚本,我认为某条线应该可以工作,但InDesign不同意。

在以下的("Geen"||"None");中失败 app.changeGrepPreferences.appliedCharacterStyle = myDoc.characterStyles.item("[Geen]"||"[None]");

我希望它更改为characterStyle [Geen][None]。取决于预定义字符样式中的可用内容。

我做错了什么?这看起来有点基础。

1 个答案:

答案 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);
}