確認ダイアログ
「はい」か「いいえ」をユーザーに選択させるダイアログです。
戻り値は「はい」ならtrue、「いいえ」ならfalseとなります。
例えば
confirm("新規ドキュメントを作成しますか?");
と入力すると次のように表示されます。
第2引数にtrueを入れると「いいえ」ボタンがアクティブになります。
confirm("新規ドキュメントを作成しますか?", true);
第3引数にはダイアログのタイトルを入れることができます。
confirm("新規ドキュメントを作成しますか?", false, "どっちにしますか?");
この戻り値によってその後の処理を分けることができます。
もし「はい」が選択されたら新規ドキュメントを作成するというスクリプトは、if文を使って次のようになります。
if(confirm("新規ドキュメントを作成しますか?")){ app.documents.add(); }
戻り値を変数に入れることもできます。
var flag =confirm("新規ドキュメントを作成しますか?"); if(flag){ app.documents.add(); }
ちなみにif文を1行で書くこともできます。
var flag =confirm("新規ドキュメントを作成しますか?"); if(flag) app.documents.add();
入力ダイアログ
ユーザーに入力してもらうためのダイアログです。
入力された文字列が戻り値となり、数値も文字列として返されます。
キャンセルされるとnullを返します。
例えば
prompt("直径何ミリの円を作成しますか?");
と入力すると次のように表示されます。
第2引数にデフォルトで入る文字を入れておきます。
上の図のように何も指定しないと「undefined」が表示されますので、何か文字を入れておくか、省略したい場合は「" "」を入れておきます。
prompt("直径何ミリの円を作成しますか?", "");
と入力すると次のように表示されます。
第2引数に文字を入れておけば、それが表示されます。
prompt("直径何ミリの正円を作成しますか?", "50mm");
と入力すると次のように表示されます。
第3引数はタイトルバーに表示する文字になるので、上記確認ダイアログと同様です。
入力された数値をもとに正円を作成し、Y100で塗りつぶすスクリプトは次のようになります。
var doc = app.activeDocument; //ドキュメントの水平方向のルーラーの単位をミリにしておく doc.viewPreferences.horizontalMeasurementUnits= MeasurementUnits.MILLIMETERS; //ドキュメントの垂直方向のルーラーの単位をミリにしておく doc.viewPreferences.verticalMeasurementUnits= MeasurementUnits.MILLIMETERS; //「mm」は省略できます var text = prompt("直径何ミリの正円を作成しますか?", "50mm"); //「try...catch」で数値以外が入力されたときのエラー処理をしておく try{ var ovl = doc.ovals.add(); /* 入力された数値は変数「text」に代入しているので、 geometricBoundsの3番目と4番目は「"+text+"」となり、 それをさらに " " で囲います。 */ ovl.geometricBounds =["0mm", "0mm", ""+text+"", ""+text+""]; ovl.fillColor = doc.swatches.itemByName("C=0 M=0 Y=100 K=0"); }catch(e){ alert("数値を入力してください"); }
入力ダイアログに100または100mmと入力すると図のようになります。
InDesignのスクリプトって本当にいろんなことができるんだな~と感じますね。たくさん覚えて、営業に「いくらでも仕事取ってこいやーっ!!」とか、会社に「こんだけ貢献してるんだから、給料もうちょい上げてくれやー!!」とか、堂々と言えるようになりたいですね。