2017-04-13 42 views
0

我正在創建一些腳本以加快InDesign進程。
我已經創建了一個腳本,我認爲某個行應該可以工作,但InDesign不同意。或擴展腳本中的運算符

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

我希望它變成一個characterStyle [Geen][None]失敗的("Geen"||"None");。取決於預定義字符樣式中的可用內容。

我在做什麼錯?這似乎有點基本。

回答

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); 
} 
+0

尼斯工作完美。謝謝! – Interactive

+1

或者,如果你想避免'try catch',你可以選擇'doc.characterStlyes.item(「[Geen]」)。isValid'屬性。 – mdomino