選択範囲があるか判定するスクリプト

Photoshop上に選択範囲があるかを判定するスクリプトです。 選択範囲があるか判定する方法によっては、Adobe Configratorで作成したパネルから判定が効かない場合があります。

Adobe Photoshop CS5, CS6で動作確認済み。Adobe Configrator 3で作成したPhotoshop CS5用のエクステンションパネルでも問題なく動作します。

sample.jsx
#target Photoshop
var docRef = app.activeDocument;
 
function checkSelection() {
    var flag = true;
    try {
        docRef.selection.bounds;
    } catch (e) {
        flag = false;
    }
    return flag;
}
 
if (checkSelection()) {
    alert("選択範囲があります。");
} else {
    alert("選択範囲がありません。");
}

Adobe Configrator 3(Photoshop CS5用のエクステンションパネル上)では、下記のコードはうまく動作しません。 Adobe ExtendScript ToolKit CS5からの実行では、動作します。

sample.jsx
#target Photoshop
 
function checkSelection() {
    var flag = true;
    try {
        var desc = new ActionDescriptor();
        var ref = new ActionReference();
        ref.putProperty(charIDToTypeID("Chnl"), charIDToTypeID("fsel"));
        desc.putReference(charIDToTypeID("null"), ref);
        executeAction(charIDToTypeID("Trnf"), desc, DialogModes.NO);
    } catch (e) {
        flag = false;
    }
    return flag;
}
 
if (checkSelection()) {
    alert("選択範囲があります。");
} else {
    alert("選択範囲がありません。");
}