Local and cloud-based workflows for extracting and updating text layers in PSD files via ExtendScript and Adobe PS API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
81 lines
No EOL
2.4 KiB
JavaScript
81 lines
No EOL
2.4 KiB
JavaScript
// Script to extract layer information from a PSD file
|
|
|
|
#target photoshop
|
|
|
|
// Function to export layer info as JSON
|
|
function exportLayerInfo() {
|
|
try {
|
|
if (app.documents.length === 0) {
|
|
alert("No document is open!");
|
|
return;
|
|
}
|
|
|
|
var doc = app.activeDocument;
|
|
var layers = getAllLayers(doc);
|
|
var layerInfo = {
|
|
documentName: doc.name,
|
|
width: doc.width.value,
|
|
height: doc.height.value,
|
|
layers: layers
|
|
};
|
|
|
|
// Save JSON to desktop
|
|
var file = new File("~/Desktop/layer_info.json");
|
|
file.open('w');
|
|
file.write(JSON.stringify(layerInfo, null, 2));
|
|
file.close();
|
|
|
|
alert("Layer information saved to desktop as layer_info.json");
|
|
} catch (e) {
|
|
alert("Error: " + e);
|
|
}
|
|
}
|
|
|
|
// Get all layers recursively
|
|
function getAllLayers(doc) {
|
|
var layers = [];
|
|
|
|
function traverse(layerSet, path) {
|
|
for (var i = 0; i < layerSet.layers.length; i++) {
|
|
var layer = layerSet.layers[i];
|
|
var layerPath = path ? path + "/" + layer.name : layer.name;
|
|
|
|
if (layer.typename === "ArtLayer") {
|
|
var layerInfo = {
|
|
name: layer.name,
|
|
id: i + 1, // Custom ID based on index
|
|
path: layerPath,
|
|
type: layer.kind.toString(),
|
|
visible: layer.visible,
|
|
isTextLayer: layer.kind === LayerKind.TEXT
|
|
};
|
|
|
|
// Add text content if it's a text layer
|
|
if (layer.kind === LayerKind.TEXT) {
|
|
layerInfo.text = layer.textItem.contents;
|
|
}
|
|
|
|
layers.push(layerInfo);
|
|
} else if (layer.typename === "LayerSet") {
|
|
// Handle layer sets (groups)
|
|
layers.push({
|
|
name: layer.name,
|
|
id: i + 1, // Custom ID based on index
|
|
path: layerPath,
|
|
type: "LayerSet",
|
|
visible: layer.visible,
|
|
isGroup: true
|
|
});
|
|
|
|
// Traverse nested layers
|
|
traverse(layer, layerPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
traverse(doc, "");
|
|
return layers;
|
|
}
|
|
|
|
// Run the script
|
|
exportLayerInfo(); |