Hey appologies for that, I left that my accident. Here's a clean code now.
(function () {
// Find smart Layers in the project
var smartObjects = findLayers(app.activeDocument, true, {
typename: "ArtLayer",
kind: LayerKind.SMARTOBJECT,
});
// Let's pick first Smart Object from the array
if (smartObjects.length === 0)
return alert("Didn't find any Smart Layer");
var mySmartLayer = smartObjects[0];
// Make it active;
touchLayer(mySmartLayer);
// Open Smart Object
openSmartObject();
// Find Text Layers in the project
var textLayers = findLayers(app.activeDocument, true, {
typename: "ArtLayer",
kind: LayerKind.TEXT
});
// Pick first text layer from the array
if (textLayers.length === 0)
return alert("Didn't find any Text Layer");
var myTextLayer = textLayers[0];
// Make it active
touchLayer(myTextLayer);
// Chante text layer content
myTextLayer.textItem.contents = "Indeed!";
// Save and close document
app.activeDocument.close(SaveOptions.SAVECHANGES);
//////////////
function findLayers(searchFolder, recursion, userData, items) {
items = items || [];
var folderItem;
for (var i = 0, il = searchFolder.layers.length; i < il; i++) {
folderItem = searchFolder.layers;
if (propertiesMatch(folderItem, userData)) {
items.push(folderItem);
}
if (recursion === true && folderItem.typename === "LayerSet") {
findLayers(folderItem, recursion, userData, items);
}
}
return items;
}
function propertiesMatch(projectItem, userData) {
if (typeof userData === "undefined") return true;
for (var propertyName in userData) {
if (!userData.hasOwnProperty(propertyName)) continue;
if (!projectItem.hasOwnProperty(propertyName)) return false;
if (projectItem[propertyName].toString() !== userData[propertyName].toString()) {
return false;
}
}
return true;
}
function touchLayer(layer) {
app.activeDocument.activeLayer = layer;
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIdentifier(app.charIDToTypeID('Lyr '), layer.id);
desc.putReference(app.charIDToTypeID('null'), ref);
executeAction(app.charIDToTypeID('slct'), desc, DialogModes.NO);
return layer;
}
function openSmartObject() {
var descriptor = new ActionDescriptor();
executeAction(stringIDToTypeID("openSmartObject"), descriptor, DialogModes.NO);
}
})();