Copy link to clipboard
Copied
HI everyone,
we have one header file used across multiple psd files as a linked smart object. What we do now is open find the changes in the header and update. But we have quit a few files and its tedious. Is there a way to for the psd files to auto-update with the changes in the smart objects without opening and re-saving manually?
thanks
Copy link to clipboard
Copied
If documents with link smart object layer are open in Photoshop the smart object layers with linked object will be automatically updated when the linked object is updated. If other PSD have smart object linked to that master file are not opened in Photoshop they will not be updated till the next time they are opened in Photoshop. When these PSD are opened opened in Photoshop they will automatically be updated. If you want all PSD with a linked smart object to be automatically be updated if a inked master is updated you would need to implement something to do that.
If you search the Photoshop Scripting forum you may find something. I believe that subject has been addressed in that forum. I believe the PSD will need to be opened in Photoshop so Photoshop can render new pixels or just store the pixels for the smart object layer content. However its an automated process. Not a manual process. I believe it involvers metadata in the the master file list document that have linked smart object links to the master file. Something like programmed events must record and use the metadata.
Copy link to clipboard
Copied
Thanks for this. Will give a look for the script but I think Adobe should consider as its something that is needed. Consider a site design with multiple pages that have a repeating header - if the header changes then you have to open each file, update the smart object and resave.
Copy link to clipboard
Copied
Use Adobe's feedback site Photoshop Family Community submit your suggestion then
Copy link to clipboard
Copied
That should work for your situation. Please try go to Layer > Smart Objects > Update all Modified Content another option download the file Name : Update All Modified Content.jsx and then In File > Scripts > Scripts events manager... add the script to be triggered on Open document and it's done.
Copy link to clipboard
Copied
It would be GREAT if you actually give a link to that .jsx file, this way it is useless, unfortunatelly (Google search gave no result for such file)
EDIT:
So I find it on graphicdesign.stackexchange.com forum, the link is here (it is the code in the accepted answer for that page):
Update All Modified Content.jsx
In case someone only needs the content of the .jsx file, here it is:
// Update all modified content
var idplacedLayerUpdateAllModified = stringIDToTypeID( "placedLayerUpdateAllModified" );
executeAction( idplacedLayerUpdateAllModified, undefined, DialogModes.NO );
Also this DOES NOT WORK in CC2019 when you have linked layer (PNG image in my case) inside another smart object - it only work for top most objects, so any nested object containing linked object will not work with this.
So can be be modified somehow so that it would work when I have like "PSD document with smar object -> smart object -> smart object with linked layer (PNG image)"?
Copy link to clipboard
Copied
I had the same struggle but overrode it with action in Photoshop (update all modified links, save and close) which I'm launching in Bridge by Tools > Photoshop > Batch... and then, in Photoshop popup window selecting my action and that's it.
It may take a while depends on how many projects you want to update but it's the most almost-self-automatic method I figured out. Hope it helps
Copy link to clipboard
Copied
Thank you for your input but no: that is not the right/good/expected solution, sorry.
I HAVE SOLVED IT FINALLY MYSELF exactly as it should be (the only thing that annoys me is that it always opened every SMARTOBJECT for a sec, it would be great if it could be done without that...anzwaz, it is fully functional even with locked and disabled layers)!
I posted my own solution on Stackoverflow here: Photoshop CC2019 auto-update all linked smart objects including nested ones
Copy link to clipboard
Copied
Tried using your script on my psd and it gets stuck in a loop trying to update the smart objects. Any ideas why this could be ?
Copy link to clipboard
Copied
Same with me. It keeps updating the same smart object over and over again.
Copy link to clipboard
Copied
This is the only script that seems to get the furthest but it gets stuck in a loop and you have to close photoshop via task manager.
Copy link to clipboard
Copied
Hello,
I am experience the same issue. I wonder if is related to the fact that I have different Artboards within the document.
Do you think there could be a solution if this is the case that the script would get stuck because of the use of Artboards in the document?
Thank you so much for your help and time put in to this since I have no idea about codding yet.
Copy link to clipboard
Copied
Any ideas how to get that script working in 2021?
Copy link to clipboard
Copied
On a file will multiple embedded objects, each containing linked content, the script got stuck for me too, just spinning, but hitting ESC popped open the last embedded object, I hit save, and going back to original file, ALL the embedded-linked content was updated.
Copy link to clipboard
Copied
For me deleting this line stopped the script from looping:
// CONTINUE INSIDE THIS ACTIVE SMARTOBJECT
autoupdateAllSmartObjects(app.activeDocument, stackNr);
Now it works very well.
Copy link to clipboard
Copied
It is the same in say InDesign or Illustrator, if you have a linked object and update the object, then each file that uses the linked object has to be opened/updated/saved.
As JJMack said, this could be scripted to some degree in finding and updating the files, but would still need to be "triggered" manually.
@Admirable_Companion5D67 if you have a simple "flat" linked SO layer structure, a Batch Action should do the job as illustrated below.
To illustrate the Adobe Bridge Batch route, one has to find all files that use the header file as a linked smart object, then select them and a batch script be run to update the files. This requires a little work, but a whole lot less work than scripting.
Step 1: Find the files that use the common header image that has been modified:
Here is the filtered result from Bridge > Edit > Find...
Step 2: Bridge > Tools > Photoshop > Batch...
Here I have created an action and used the "insert menu item command" to build the action steps. This could just as easily use a script that provides more abilities than what an action can provide.
Here is the result of the batch action:
Copy link to clipboard
Copied
Thank you so much for being interested in solving this issue.
I was able to create and run the action but for some reason still not able to update the only two required images (BACK.psd and TITLE.psd).
Do you think you could open the file and take a look at it to see why the action is not working the way it should?
I really appreciate.
VERSIONER-01.psb
This is how it looks now but it does not reflects what the colors of the linked files have.
Here is how the three file colors look like, but for some reason they wont update on the VERSIONER-01.psb.
Here is the link to download the folder containing the files.
https://www.dropbox.com/s/hyotqx3kqof02pz/02-ASSETS.zip?dl=0
Thank you so much for your help,
Copy link to clipboard
Copied
Yes, it does appear that the artboards are making this more complex.
Attempting to isolate the issue to just one artboard, it appears that you have an embedded SO layer in the artboard:
Editing that single layer, there are linked SO layers to be updated:
Result after updating the linked SO inside the embedded SO:
So the challenge would appear to be scripting a loop over each artboard, looping over layers in each artboard and editing any smart object layer to update the linked layers, then closing/saving before moving onto the next artboard and repeating.
I'm looking into this, I really hate artboards though!
Copy link to clipboard
Copied
In the short term, I'd suggest a semi-automated approach.
1) Filter the layer panel view to only show smart object layers
2) Create an action and run the action on each smart object layer, one layer at a time:
Note: there are scripts which can run an action against multiple selected layers!
3) The final result of only the background being updated (left original, right updated):
Note: The logo has not been updated in this example (I cropped off some artboards to save space).
Copy link to clipboard
Copied
This is pure gold!
I am looking in to this as we speak and will let you know how it went!
Cant thank you enough!
Copy link to clipboard
Copied
Hello Stephen,
I was able to follow all of the steps and the Action seem to work. Non the less I still have a few questions...
1)- In the Close Action... the "Without Maximize Compatibility" necessary or would "Maximize Compatibility" be a different outcome?
2) About your note: there are scripts that can run an action against multiple selected layers!
Is there a way you could find one I could use? I barely know that changing the extension of a text file to .jsx would make the code into a script, but there will be so many nuances that could take place before getting to that final part of the process.
I was able to find this site where I believe there are some of these scripts you mention, but I will not even have an idea of how to apply the workflow of what the ultimate goal I am trying to accomplish (forcing all of the assets to update when opening the Master file).
3)- I wish this script from above made by Anka Petkova could work on my master file. I believe it gets stuck for the fact that does not consider Artboards.
Photoshop CC2019 auto-update all linked smart objects including nested ones
4)- I am not a friend of Artboards either but in this exact case is necessary to be able to adjust sizes and positions within the same file and at the same time be able to export all of these different versions.
I hope that there will be a solution for this at the end of the day. I'll keep my fingers crossed.
Thank you so much for your help
Copy link to clipboard
Copied
Glad you are making progress!
1) For a smart object PSB save, it shouldn't matter and would only bloat things further.
2-3) You are likely correct, the artboards are probably going to mess up scripts, even if using the layers panel to isolate the layers, more testing would be required. You would indeed search the web for files tha can play actions on all or selected layers, ideally ones that are designed around artboards.
4) I guess it is a trade off with the pros/cons of working with and around artboards, as you are finding, they are helpful in one area but in another a hindrance.
I'll revisit, however, you may just have to apply an F-key shortcut to the action and manually run it on each isolated SO layer.
Copy link to clipboard
Copied
Thank you for the encouragement, Stephen,
I'll try to learn about scripting and keep my fingers crossed, some how there could be a straight forward solution for this need.
This case became personal to me because sinse I've been trying to prove to this team I am working with that the way they want to go about this is not the rightone, they wanted to work the three proportions using three separated photoshops. I caped telling them they taking the wrong route and that I was not interested in being part of a project that would not consider more practical solutions. The key here is that we are processing hundreds of artworks that way so any step that can be skiped represents hours being saved. So when it came time for me to prove my process was the way to go I hit the wall of photoshop shortcomings, but I still can prove them wrong because there's always a way where there's a will. Feel free to reach out in private if you think you have some time available to make an estimate to work on making this workflowwork so we can have this puzzle solved.
Thanks again for all your time put into this!
Copy link to clipboard
Copied
I don't have much scripting experience but I have recently made a script with the help of a developer.
The file contained layers in groups in artboards, and it took some searching to figure out what those were all called in Visual Studio so maybe I can help you out with that part...
To access a layer inside a group inside an artboard, do this:
var artboard = app.activeDocument.layers[0];
var groupInArtboard = artboard.layerSets[0];
var layerInGroupInArtboard = groupInArtboard.artLayers[0];
For the first artboard/group/layer use 0, for the second one use 1, for the third one use 2 etc.
I hope this helps! And hope I didn't mess it up typing. Good luck 👍🏼