書いたコード
#targetengine "addProperty"
var doc = app.activeDocument;
var allPstyles = doc.allParagraphStyles;
var allPstylesLen = allPstyles.length;
var pstyles = [];
var pstylesNames = [];
for (var i = allPstylesLen - 1; i > 1; i--) {
pstyles.push(allPstyles[i])
}
pstyles.reverse();
var pstylesLen = pstyles.length;
for (var i = 0; i < pstylesLen; i++) {
pstylesNames.push(pstyles[i].name)
}
var dlg = new Window("palette", "段落スタイル一括変更");
dlg.alignChildren = "top";
dlg.orientation = "row";
var leftCol = dlg.add("panel", undefined, "段落スタイル一覧")
var rightCol = dlg.add("group")
for (var i = 0; i < pstylesLen; i++) {
var pstyleList = leftCol.add("checkbox", undefined, pstylesNames[i]);
pstyleList.alignment = "left";
}
var property = rightCol.add("edittext", [0, 0, 200, 100], "pointSize='12Q'");
var start = dlg.add("button", undefined, "実行");
dlg.show();
start.onClick = function () {
var myTxt = property.text;
for (var i = 0; i < pstylesLen; i++) {
if (leftCol.children[i].value) {
for (var j = 0; j < pstylesLen; j++) {
if (pstylesNames[j] == leftCol.children[i].text) {
eval("doc.paragraphStyles.itemByName('" + pstylesNames[j] + "')." + myTxt)
}
}
}
}
dlg.close();
alert("完了しました");
}
メモ
積み残し
- 配列から特定の要素を除外
[段落スタイルなし][基本段落]を除外するところがやや冗長?
①allParagraphStyles(配列)内を検索
②インデックスを取得
③インデックスを指定して削除
としたほうがいいかも。
ExtendScriptではindexOfは使えないがspliceは使える。
010. 段落スタイル名をまとめて変更で作った、インデックスを取得する関数を使えばいけるかも?
参考