ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

InDesignでJavaScript その2

InDesignでJavaScript その2。

InDesignでJavaScript その1で作った「boxの周りにguide(ver.1.0).jsx」をちょっとだけバージョンアップ。

●フレーム種別の判断を削除

●複数フレーム選択時のエラー処理

●ダイアログを追加(作成するガイドラインを上下左右と四辺の選択制)

分岐処理はswitchを使ってすっきりさせてみた。

OS 9のAppleScriptのときのように、if文が羅列する記述をしなくていいのはデバッグしやすいし、時間が経ってから見てもわかりやすいので、お気に入り。

次は「上と左だけガイドラインを作成する」という処理を入れたいので、チェックボックスにしてみよう。

四辺を選択したら個別に引けないようにもしてみたい。

中心線を引くのも面白いかな。

/*

★boxの周りにguide.jsx★

☆ver.1.1☆

Copyright [偽善者こうちゃん]

[2006.10.05] {

ver.1.1

フレーム種別の判断を削除

複数フレーム選択時のエラー処理

ダイアログを追加(上下左右と四辺の選択制)

}

[2006.10.02] {

ver.1.0作成

}

boxの周りにguideを引くためのJavaScript。

勉強用に作ったのでサンプルとして使わないほうが…。

なお、このJavaScriptを使用して損害をこうむっても

私は知りませんので、あしからず。

偽善者こうちゃん

http://macneko.blog77.fc2.com/

*/

//変数に代入

var docobj = app.activeDocument;

var sel = docobj.selection[0];

//フレームを1つだけ選択していたら

if (app.selection.length == 1) {

//座標値を変数に代入

var y1 = sel.visibleBounds[0];

var x1 = sel.visibleBounds[1];

var y2 = sel.visibleBounds[2];

var x2 = sel.visibleBounds[3];

// ダイアログの土台の生成とタイトル名の付与

var myDialog = app.dialogs.add({name:"ガイド作成設定"});

// 生成したダイアログの中身を構築

with(myDialog.dialogColumns.add()) {

with(dialogRows.add()) {

with(dialogColumns.add()) {

//ガイドを引く場所をラジオボタンで設定するためにラジオボタンを作成

var MyguideGroups = radiobuttonGroups.add();

with (MyguideGroups) {

//ガイドを引く場所をラジオボタンで設定する

var Topselect= radiobuttonControls.add({staticLabel:"上辺:"});

var Bottomselect = radiobuttonControls.add({staticLabel:"下辺:"});

var Leftselect = radiobuttonControls.add({staticLabel:"左辺:"});

var Rightselect = radiobuttonControls.add({staticLabel:"右辺:"});

var ALLselect = radiobuttonControls.add({staticLabel:"四辺:",checkedState:true});

}

}

}

}

//ダイアログを表示

if (myDialog.show() == true) {

switch(MyguideGroups.selectedButton) {

//選択したボタンにあわせてキーワードを代入

//switchは「●●の場合△△する」という使い方ができる

case 0 : var GuideAline = "Topguide"; break ;

case 1 : var GuideAline = "Buttomguide"; break ;

case 2 : var GuideAline = "Leftguide"; break ;

case 3 : var GuideAline = "Rightguide"; break ;

case 4 : var GuideAline = "Allguide"; break ;

default : break ;

}

with(docobj.pages.item(0)){ //

switch(GuideAline) {

case "Topguide" :

//ボックスの座標値を基にガイドを引く

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y1)});

break ;

case "Buttomguide" :

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y2)});

break ;

case "Leftguide" :

guides.add(GuideAline,{orientation:HorizontalOrVertical.vertical,location:(x1)});

break ;

case "Rightguide" :

guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:(x2)});

break ;

case "Allguide" :

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y1)});

guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:(y2)});

guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:(x1)});

guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:(x2)});

break ;

default : break ;

}

}

} else {

myDialog.destroy();

}

} else { //選択していない、または2つ以上選択している場合

alert("フレームを1つだけ選択してから実行してください。")

}