公開日:2018年5月23日
[ページ]パネルの[カラーラベル]が以前より深くなってしまったので、パレット形式のUIでスクリプトを作成しました。
「InDesignにデフォルトで用意されているほどの大量の色分けはなくてもいいだろう」ということで、使用できるラベルの色は「シアン」「マゼンタ」「緑」「青」「赤」の5種類のみに絞っています。
1.スクリプトを実行すると、ダイアログが表示されます。
2.[開始ページ][終了ページ]にはドキュメントの開始ページと終了ページがすでに入力されています。ラベルを付けたいページ範囲をここで入力しておきます※。
※「ノンブルでの表記を使う」のチェックを外すと、ドキュメントの最初のページを1と数える形式で指定できます。
3.[ラベルの色]からページに付加するラベルの色を選択し、「上記設定で実行」をクリックします。
4.指定したページにラベルが付加されます。
#target indesign
#targetengine "colorlabel"
var allPages=app.activeDocument.pages;
//ここからUI(56行目まで)
var win=new Window ("palette","colorlabel");
var form=win.add("panel");
var txtFieldST=form.add("group");
txtFieldST.alignment="left";
var endPageMessage = txtFieldST.add ("statictext",undefined,"開始ページ");
var startPageNum= txtFieldST.add ("edittext",undefined,allPages[0].name);
startPageNum.characters=4;
startPageNum.active=true;
var txtFieldEN=form.add("group");
var endPageMessage = txtFieldEN.add ("statictext",undefined,"終了ページ");
txtFieldEN.alignment="left";
var endPageNum= txtFieldEN.add ("edittext",undefined,allPages[allPages.length-1].name);
endPageNum.characters=4;
endPageNum.active=false;
//チェックボックス
var check=form.add("panel")
var checkBox=check.add("checkbox",undefined,"ノンブルでの表記を使う");
checkBox.value=true;
check.graphics.font = ScriptUI.newFont ("", "", 12);
check.graphics.foregroundColor = check.graphics.newPen (win.graphics.PenType.SOLID_COLOR, [1, 0, 0], 0.5);
var remCheck=check.add("checkbox",undefined,"ラベルを外す");
//ラベル選択ボタン
var labels=win.add("panel", undefined,"ラベルの色");
labels.alignChildren="left";
labels.add ("radiobutton", undefined, "シアン");
labels.add ("radiobutton", undefined, "マゼンタ");
labels.add ("radiobutton", undefined, "緑");
labels.add ("radiobutton", undefined, "青");
labels.add ("radiobutton", undefined, "赤");
//ラベル文字サイズ
for(var l=labels.children.length-1;l > -1;l--){
labels.children[l].graphics.font = ScriptUI.newFont ("", "Bold", 16);
}
//ラベル文字色
labels.children[0].graphics.foregroundColor = labels.children[0].graphics.newPen (win.graphics.PenType.SOLID_COLOR, [0, 1, 1], 0.5);
labels.children[1].graphics.foregroundColor = labels.children[1].graphics.newPen (win.graphics.PenType.SOLID_COLOR, [1, 0, 1], 0.5);
labels.children[2].graphics.foregroundColor = labels.children[2].graphics.newPen (win.graphics.PenType.SOLID_COLOR, [0, 1, 0], 0.5);
labels.children[3].graphics.foregroundColor = labels.children[3].graphics.newPen (win.graphics.PenType.SOLID_COLOR, [0, 0, 1], 0.5);
labels.children[4].graphics.foregroundColor = labels.children[4].graphics.newPen (win.graphics.PenType.SOLID_COLOR, [1, 0, 0], 0.5);
//実行ボタン
var buttons=win.add("group");
buttons.align="left";
var OK1=buttons.add ("button", undefined, "上記設定で実行");
var cancel=buttons.add ("button", undefined, "キャンセル");
win.center();
win.show();
//ラベルの色。シアン、マゼンタ、緑、青、赤の5種類を候補に
var colors=[
UIColors.CYAN,
UIColors.MAGENTA,
UIColors.GREEN,
UIColors.BLUE,
UIColors.RED
];
//ボタン押したときの処理
OK1.onClick=function(){
//開始ページと終了ページを取得
function getPage(){
var doc=app.activeDocument;
//「ノンブルでの表記を使う」にチェックが入っている場合、ここでエラーが発生するので、エラーの場合はスルーしてノンブル表記を取得する
try{
var startPage=doc.pages[parseInt(startPageNum.text)-1];
var endPage=doc.pages[parseInt(endPageNum.text)-1];
}catch(e){
};
var startPageName=doc.pages.itemByName(startPageNum.text);
var endPageName=doc.pages.itemByName(endPageNum.text);
var pageCount=doc.pages.count();
return [doc,startPage,endPage,parseInt(endPageNum.text),pageCount,startPageName,endPageName];
/*戻り値は、
0:今のドキュメント
1:開始ページ(配列)
2:終了ページ(配列)
3:終了ページ数(UIでの入力値)
4:ドキュメント中の全ページ数
5:開始ページ(ノンブル表記)
6:終了ページ(ノンブル表記)
*/
}
var get=getPage();
//分岐:ラベルを外す場合-ノンブル表記を使用
if((remCheck.value==true)&&(checkBox.value==true)){
try{
get[0].pages.itemByRange(get[5],get[6]).pageColor=PageColorOptions.NOTHING;
return;
}catch(e){
alert("存在しないノンブル、または開始と終了位置を誤入力している可能性があります");
return;
}
};
//分岐:ラベルを外す場合-絶対ページで
if((remCheck.value==true)&&(checkBox.value==false)){
if(get[3] > get[4]){
alert("ページ数オーバー");
}else{
get[0].pages.itemByRange(get[1],get[2]).pageColor=PageColorOptions.NOTHING;
return;
}
};
//分岐:「ノンブルでの表記を使う」にチェックが入っている場合
if(checkBox.value==true){
try{
if(labels.children[0].value==true){get[0].pages.itemByRange(get[5],get[6]).pageColor=colors[0]};
if(labels.children[1].value==true){get[0].pages.itemByRange(get[5],get[6]).pageColor=colors[1]};
if(labels.children[2].value==true){get[0].pages.itemByRange(get[5],get[6]).pageColor=colors[2]};
if(labels.children[3].value==true){get[0].pages.itemByRange(get[5],get[6]).pageColor=colors[3]};
if(labels.children[4].value==true){get[0].pages.itemByRange(get[5],get[6]).pageColor=colors[4]};
return;
}catch(e){
alert("存在しないノンブル、または開始と終了位置を誤入力している可能性があります");
return;
};
};
//分岐:絶対値でページを指定する場合
if(get[3] > get[4]){
alert("ページ数オーバー");
}else{
if(labels.children[0].value==true){get[0].pages.itemByRange(get[1],get[2]).pageColor=colors[0]};
if(labels.children[1].value==true){get[0].pages.itemByRange(get[1],get[2]).pageColor=colors[1]};
if(labels.children[2].value==true){get[0].pages.itemByRange(get[1],get[2]).pageColor=colors[2]};
if(labels.children[3].value==true){get[0].pages.itemByRange(get[1],get[2]).pageColor=colors[3]};
if(labels.children[4].value==true){get[0].pages.itemByRange(get[1],get[2]).pageColor=colors[4]};
};
};
//キャンセル
cancel.onClick=function(){
win.close();
};