/* Multiple character styles Version: 1.0 Script by Thomas Silkjær http://indesigning.net/ */ var ts_document = app.documents.item(0); var ts_conditionCombinations = combine(ts_document.conditions.everyItem().name); app.findChangeGrepOptions.includeFootnotes = false; app.findChangeGrepOptions.includeHiddenLayers = false; app.findChangeGrepOptions.includeLockedLayersForFind = false; app.findChangeGrepOptions.includeLockedStoriesForFind = false; app.findChangeGrepOptions.includeMasterPages = false; app.findGrepPreferences = NothingEnum.nothing; for(a = 0; a < ts_conditionCombinations.length; a++) { ts_conditionCurrentCombinations = [] for(b = 0; b < ts_conditionCombinations[a].length; b++) { ts_conditionCurrentCombinations.push(ts_document.conditions.itemByName(ts_conditionCombinations[a][b])); } app.findGrepPreferences.appliedConditions = ts_conditionCurrentCombinations; var ts_foundText = ts_document.findGrep(); for(b = 0; b < ts_foundText.length; b++) { ts_currentText = ts_foundText[b]; ts_currentTextProperties = ts_currentText.properties try { for(c = 0; c < ts_conditionCombinations[a].length; c++) { var ts_currentCharacterStyle = ts_document.characterStyles.itemByName(ts_conditionCombinations[a][c]); var ts_currentCharacterStyleProperties = ts_currentCharacterStyle.properties; for(d in ts_currentCharacterStyleProperties) { if(ts_currentCharacterStyleProperties[d] != NothingEnum.NOTHING && ts_currentCharacterStyleProperties[d] != ts_currentTextProperties[d] && ts_currentCharacterStyleProperties[d] != null && ts_currentCharacterStyleProperties[d] != "" && d != 'basedOn' && d != 'name' && d != 'id' && d != 'parent' && d != 'index' && d != 'imported' && d != 'label' && d != 'properties' && d != 'gradientStrokeStart' && d != 'gradientFillStart') { ts_currentText[d] = ts_currentCharacterStyleProperties[d]; } } } } catch(err) {} } } // Thanks to http://snippets.dzone.com/posts/show/3545 function combine(a) { var fn = function(n, src, got, all) { if (n == 0) { if (got.length > 0) { all[all.length] = got; } return; } for (var j = 0; j < src.length; j++) { fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all); } return; } var all = []; for (var i=0; i < a.length; i++) { fn(i, a, [], all); } all.push(a); return all; }