Practice makes Perfect !

ExtendedScript素人です。同じ境遇の方、一緒に脱素人を目指しましょう!

確認ダイアログと入力ダイアログ

確認ダイアログ

「はい」か「いいえ」をユーザーに選択させるダイアログです。
戻り値は「はい」ならtrue、「いいえ」ならfalseとなります。

例えば

confirm("新規ドキュメントを作成しますか?");

と入力すると次のように表示されます。

f:id:YustinBieber:20211103212312p:plain


第2引数にtrueを入れると「いいえ」ボタンがアクティブになります。

confirm("新規ドキュメントを作成しますか?", true);
f:id:YustinBieber:20211103212659p:plain
第2引数がtrueで「いいえ」が選択される… 混乱しそう…


第3引数にはダイアログのタイトルを入れることができます。

confirm("新規ドキュメントを作成しますか?", false, "どっちにしますか?");

f:id:YustinBieber:20211103213611p:plain


この戻り値によってその後の処理を分けることができます。
もし「はい」が選択されたら新規ドキュメントを作成するというスクリプトは、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("直径何ミリの円を作成しますか?");

と入力すると次のように表示されます。
f:id:YustinBieber:20211105214112p:plain


第2引数にデフォルトで入る文字を入れておきます。
上の図のように何も指定しないと「undefined」が表示されますので、何か文字を入れておくか、省略したい場合は「" "」を入れておきます。

prompt("直径何ミリの円を作成しますか?", "");

と入力すると次のように表示されます。
f:id:YustinBieber:20211105214842p:plain

第2引数に文字を入れておけば、それが表示されます。

prompt("直径何ミリの正円を作成しますか?", "50mm");

と入力すると次のように表示されます。
f:id:YustinBieber:20211105215122p:plain

第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と入力すると図のようになります。
f:id:YustinBieber:20211106080646p:plain


InDesignスクリプトって本当にいろんなことができるんだな~と感じますね。たくさん覚えて、営業に「いくらでも仕事取ってこいやーっ!!」とか、会社に「こんだけ貢献してるんだから、給料もうちょい上げてくれやー!!」とか、堂々と言えるようになりたいですね。