You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Photoshop脚本为theArray1、theArray2添加弹窗输入提示

Photoshop 批量文本替换脚本(支持弹窗输入替换规则)

修改说明

原脚本的查找、替换值为硬编码,本次修改新增弹窗输入能力,无需每次改动脚本代码即可自定义替换规则,同时新增输入校验避免异常。

使用步骤

  • 运行脚本后,第一个弹窗输入所有需要查找的文本,多个内容用英文逗号分隔,例:username,部门,工号
  • 第二个弹窗输入和查找内容顺序对应的替换值,多个内容同样用英文逗号分隔,例:李明,技术部,10086
  • 脚本自动遍历当前所有打开的PS文档内的所有文本图层(包含嵌套在图层组内的文本图层)完成批量替换

完整修改后代码

// 批量替换文本图层内容
// 2013 原始版本,修改后支持弹窗输入替换规则
#target photoshop

if (app.documents.length > 0) {
    for (var n = 0; n < app.documents.length; n++) {
        app.activeDocument = app.documents[n];
        app.activeDocument.suspendHistory("批量替换文本", "main()");
    }
}

// 核心执行逻辑
function main () {
    var myDocument = app.activeDocument;
    var theLayers = collectTextLayers(myDocument, []);
    if (theLayers.length <= 0) {
        alert("当前文档未检测到文本图层,脚本终止");
        return;
    }

    // 弹窗获取查找关键词
    var findInput = prompt("请输入要查找的所有文本,多个用英文逗号分隔:", "username");
    if (findInput === null || findInput.trim() === "") {
        alert("未输入查找内容,脚本终止");
        return;
    }
    var theArray1 = findInput.split(",").map(item => item.trim());

    // 弹窗获取对应替换值
    var replaceInput = prompt("请输入对应顺序的替换值,多个用英文逗号分隔:", "姓名");
    if (replaceInput === null || replaceInput.trim() === "") {
        alert("未输入替换内容,脚本终止");
        return;
    }
    var theArray2 = replaceInput.split(",").map(item => item.trim());

    // 校验规则数量是否匹配
    if (theArray1.length !== theArray2.length) {
        alert("查找内容和替换值的数量不匹配,脚本终止");
        return;
    }

    // 执行替换
    for (var a = 0; a < theLayers.length; a++) {
        for (var b = 0; b < theArray1.length; b++) {
            var theString = theLayers[a].textItem.contents;
            while (theString.indexOf(theArray1[b]) != -1) {
                theString = theString.replace(theArray1[b], theArray2[b]);
            }
            theLayers[a].textItem.contents = theString;
        }
    }
}

// 递归收集所有文本图层
function collectTextLayers (theParent, allLayers) {
    if (!allLayers) {
        var allLayers = new Array();
    }
    for (var m = theParent.layers.length - 1; m >= 0;m--) {
        var theLayer = theParent.layers[m];
        if (theLayer.typename == "ArtLayer") {
            if (theLayer.kind == LayerKind.TEXT) {
                allLayers.push(theLayer);
            }
        } else {
            allLayers = collectTextLayers(theLayer, allLayers);
        }
    }
    return allLayers;
}

内容的提问来源于stack exchange,提问作者aichaun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 12:36:03