﻿// 检查是否有活动文档
if (app.documents.length > 0) {
    var doc = app.activeDocument; // 获取活动文档

    // 递归函数来构建所有图层的字符串表示
    function buildLayersString(layerSet, indent) {
        var result = "";
        var currentIndent = Array(indent + 1).join("  "); // 根据缩进级别构建缩进字符串
        for (var i = 0; i < layerSet.layers.length; i++) {
            var layer = layerSet.layers[i];
            var layerName = layer.name.replace(/"/g, '\\"'); // 转义引号

            if (layer.typename === 'ArtLayer') {
                // 构建图层的字符串表示
                result += '\n' + currentIndent + '\"图层: ' + layerName + '\": null';
            } else { // LayerSet
                // 构建图层组的字符串表示，并递归处理子图层
                var childResult = buildLayersString(layer, indent + 1);
                if (childResult !== "") {
                    result += '\n' + currentIndent + '\"图层组: ' + layerName + '\": {' + childResult + '}';
                }
            }
            
            if (i < layerSet.layers.length - 1) {
                result += ','; // 如果不是最后一个图层或图层组，添加逗号
            }
        }
        return result;
    }
   
    var layersString = "{" + buildLayersString(doc, 0) + "\n}";

    // 删除最后一个逗号
    layersString = layersString.replace(/,\s*$/, '');

    // 创建文件并写入数据
    var desktopPath = Folder.desktop.fsName; // 获取桌面路径
    var filePath = desktopPath + "/photoshop_layers.json"; // 文件完整路径
    var file = new File(filePath);

    // 打开文件进行写入，并使用GBK编码
    file.open("w");
    file.encoding = "GBK";
    file.write(layersString);
    file.close();

    alert("文件已保存至桌面: photoshop_layers.json");
} else {
    alert("没有打开的文档");
}
