ろくやん(id:rokuyaN)さんの下記の記事でコメント付けたけどタグ文字をエスケープできずうまくコードが貼り付けられなかった。
のでここに晒しておきます(元のスクリプトは上記ページ参照)。
var layObj = app.activeDocument.layers; numLayerLock ();//関数の呼び出し function numLayerLock() {//処理を記した関数 if (!Window.confirm ("処理を開始します","false ","テスト")) { alert ("処理を中断します"); return; //「はい」が押されなければ関数を出る } //↓こっから処理--------------------------------------- for (var i=0; i<layObj.length; i++){ if (layObj[i].name.match(/\d/)){ layObj[i].locked = true; } } //↑ここまで処理-------------------------------------- alert ("処理が完了しました");//←★完了はここ }
もともとのスクリプトでは、Window.confirm ("処理を開始します","false ","テスト")
を変数flag
に代入してその値をif-else文で判定していました。単に実行されたかキャンセルされたかだけを調べたいだけなので、この場合わざわざ変数に入れずに直接if文に突っ込んで値を評価させるのもいいかと思います(可読性と天秤にかける)。
その上で、評価された値を否定演算子!
で真偽をひっくり返します。そうすることで最初のif文if (!Window.confirm ("処理を開始します","false ","テスト"))
は偽ならif文の中のブロックに進みます。ここで警告文を表示し、return文で関数を抜けさせると入れ子がひとつ減らせます。