Photoshop Scriptコード

Scripting Listenerで取得したコードやScriptUIコードを載せています。

指定したドキュメントにアクティブレイヤーを複製する

コード

/**
 * 指定したドキュメントにアクティブレイヤーを複製する
 * @param {Document} [toDoc=activeDocument] - 複製先ドキュメント
 */
function duplicateActiveLayer(toDoc) {
    var getDocNum = function (doc) {
        var num;
        for (var i = documents.length; i--;) {
            if (documents[i] == doc) {
                num = i;
                break;
            }
        }
        return num;
    };
    toDoc = toDoc || activeDocument;
    var toDocNum = getDocNum(toDoc);
 
    var desc = new ActionDescriptor();
    var ref1 = new ActionReference();
    ref1.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
    desc.putReference(charIDToTypeID('null'), ref1);
    var ref2 = new ActionReference();
    if (toDoc == activeDocument) {
        ref2.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
    }
    else {
        ref2.putOffset(charIDToTypeID('Dcmn'), toDocNum);
    }
    desc.putReference(charIDToTypeID('T   '), ref2);
    executeAction(charIDToTypeID('Dplc'), desc, DialogModes.NO);
}

補足

copy(), paste()を使っての移動と異なり、クリップボードを経由しません。
レイヤーへ適用している効果も複製されます。
また、透明部分を含むレイヤーを複製した場合でも、複製元と同じ位置(左上座標)に設置されます。

確認バージョン

CS2, CS6

ページトップへ