Photoshop: Add/Share Actions + Scripts to CreativeCloud Library

  • 9
  • Idea
  • Updated 2 months ago
Would be a comfortable way of getting script updates to coworkers.
Photo of Markus Ast

Markus Ast

  • 1 Post
  • 0 Reply Likes

Posted 4 years ago

  • 9
Photo of Joshua Harwood

Joshua Harwood

  • 2 Posts
  • 3 Reply Likes
@Markus, i have started making Adobe Addons which contain the .atn files. Then sharing the Addon with colleagues. It means i can push updated action files out to all the users easily. Handy workaround until Adobe improves syncing through libraries.

https://www.adobeexchange.com/producer
Photo of Max Johnson

Max Johnson, Champion

  • 540 Posts
  • 280 Reply Likes
I will have to investigate this further...
Photo of Joshua Harwood

Joshua Harwood

  • 2 Posts
  • 3 Reply Likes
Yeah, its pretty straightforward. You can't record actions that reference the Libraries panel (e.g. to drag an image into a document), which is a shame. Hope you find it useful
Photo of John White

John White

  • 4 Posts
  • 1 Reply Like
Might have to look into this as well. Thanks so much for the info.  It's been a pain making sure everyone has the same actions.  We make so many new one constantly
(Edited)
Photo of Pedro Marques

Pedro Marques

  • 165 Posts
  • 26 Reply Likes
I had to invent something to accomplish several levels of photoshop/bridge user update.
I have a central folder containing all my scripts, assets, atn, toolpresets, cameraraw tool presets, etc, etc.
Then, the each photoshop of my team has installed a listener (startup) that runs a central script.
The first thing this script does is to verify if there are any recent file (modified date) that has been updated by me, and it make sure that all file form the central folder have a recent copy on a public folder (in windows, we use c:\Users\Public\myFolder\)
When everything has been updated, the central script can then load every thing it needs from scripts.
Some variables can also been addressed to the app it self (photoshop or bridge) using prototypes to extend objects or $.setenv() $.getenv() or loading any script updated.

This is crucial for me, otherwise, it would be very hard to update PC by PC any update. 
If the team has 20, 30 or 50 users.
It is working well for some years and has the great advantage to run with non-admin rights user.
I also export a log install file where I can put any errors of installation, the user name, the PC number, the app versions, etc, etc.

Hope it helps.
Photo of John White

John White

  • 4 Posts
  • 1 Reply Like
That is interesting. I don't know much about scripts and how to make and run them, or what the listener (startup) is but that may be something I will have to check out.  We currently have a team around 15 but we grow to 20 -25 at time, so this would be very helpful.  I'm trying to streamline things as much as possible and people make Actions all the time to help out with our processes so to a central location where we can have people update their Actions automatically would be so helpful.  
Photo of Max Johnson

Max Johnson, Champion

  • 540 Posts
  • 280 Reply Likes
Thanks for the in depth post Pedro! I hadn't considered adding a startup script. Could you please explain how you got it to run at startup? Is it a CEP extension or something like that?

I am pretty sure you can get the location of the Creative Cloud Files directory from the CEP/Photoshop api, so that could be another good place to transfer file updates to local storage...
Photo of Pedro Marques

Pedro Marques

  • 165 Posts
  • 26 Reply Likes
Hi Max

I don't need any CEP/photoshop api or extension on my team.
I am a plain "off-line" developer using script optimizations for teams:
- studios (lightroom), quality-control (bridge), and photo-editors (photoshop&Bridge)

It doesn't mean I will never develop a inner html extension for my team, but I need time and a long way to go.

To activate a startup listener from photoshop, I just run this code once on photoshop and the nex time it opens, it will run it alone again.

if (BridgeTalk.appName == "photoshop") {
    var myScriptInstall = File("[central folder some where in my team network]");
    app.notifiers.removeAll();   // remove all notifiers and add them again
    app.notifiersEnabled = true; // activate notifiers
    var eventFile = File(myScriptInstall +"/startUpPhotoshopScript.jsx");
    try{ // se tem rede, usa o script de instalação da origem, se não usa o da pasta Farfetch:
        if (eventFile.exists) {
            app.notifiers.add("Ntfy", eventFile); // each kind of notifier has a code. "Ntfy" is on photoshop restart
        } else {
            alert("Network fail");
        }
    }catch(e){}
}

After running this, verify it by opening File>Scripts>Scripts Events Manager... and it must be there.
Then resart photoshop and the script you defined will run on start event.

I suggest you use the Photoshop script forum to have more accurate answers regarding scripts:
https://forums.adobe.com/community/photoshop/photoshop_scripting
or Bridge Scripting:
https://forums.adobe.com/community/bridge/bridge_scripting
or even CS SDK for APIs, etc
https://forums.adobe.com/community/creativesuites/cs_sdk
https://forums.adobe.com/community/coding-corner

Many answers are already there and can be found.
Photo of Max Johnson

Max Johnson, Champion

  • 540 Posts
  • 280 Reply Likes
Thank you for the code and links! I've been developing tools and scripts for my team in Photoshop, but haven't looked at Bridge scripting before.

I hadn't used the Scripts Events Manager before, but now that you pointed it out, I wanted to share something in there!

Go to File>Scripts>Scripts Events Manager... the dialog will appear...
Set the "Event" dropdown to "everything"
Set "Script" dropdown to "Clean Listener"
Click the "Add" button

Now all the actions you take in photoshop will record their listener properties to a file on your desktop called "Clean Listener.jsx" it looks like this:

#target photoshop
// No handler found for event: 2521::AdobeScriptAutomation Scripts
// No handler found for event: 1936483188:slct:select
// No handler found for event: 1836021349:move:move
// No handler found for event: 1836021349:move:move
// No handler found for event: 1214521376:Hd :hide
// No handler found for event: 1399355168:Shw :show
// No handler found for event: 1936483188:slct:select
// No handler found for event: 1131435084:CpTL:copyToLayer

Which will be invaluable when writing scripts in the future! I can use that to find the event ID to hook onto.
Photo of Pedro Marques

Pedro Marques

  • 165 Posts
  • 26 Reply Likes
There are events and ... inner-events or sub-events
Not all events can be retrieved. 

Lets take one of your examples: 1399355168:Shw :show
TypeID (number): 1399355168
charID( "Shw " ) // always 4 digits/spaces (the space in the end is important)
StringID( "show" )

You can access this same event on photoshop by using one of the 3. They are all the same.
And you can convert all to a number that photoshop understands using:
stringIDToTypeID( "show" )
charIDToTypeID( "Shw " )

More generic events some times need specific triggers. For example, I want to trigger the event when a user creates a colorSampler.
I must use this:
(...)
app.notifiers.add("Mk  ", cstoolEvent, "ClSm");
(...)
The "make" event has nested the colorsampler event "ClSm"

Adobe has some Event ID Codes (still incomplete) in the PDF of photoshop scripting - pag 216:
http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop_scriptref_js.pdf

And here - pag 84:
http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop_scripting_guide.pdf
Photo of John White

John White

  • 4 Posts
  • 1 Reply Like
I would really love to have the option too to add/share actions to My Library. My department in my company uses a lot of actions and to be to share them via the Library would be a huge help. I could just send new employees or people with new computer a link to my Library and they could in go download all the actions we use. I hope Adobe really adds this.
Photo of Pedro Marques

Pedro Marques

  • 169 Posts
  • 26 Reply Likes
Our actions are stores together in a ATN file in our central folder as I previous described.
The script triggered by the photoshop restart, removes this team Set of actions and reloads it again to make sure everybody uses the last updates. The cade is very simple and we do not use CC Library to store team actions (only few small short term projects).
This avoids the need the editor has to load the last actions set. He just need to restart. 
It is possible to load several sets on restart.

If the sets have also shortcuts that conflict with existing ones on photoshop, the existing one prevail, but the action is loaded the same.
 
Photo of John White

John White

  • 4 Posts
  • 1 Reply Like
Thanks so much for the information you have provided here. Looks like I got a lot of homework to do to figure out how to type up those scripts and make sense of them.  Coding like that isn't something I excel at currently but it looks like it's time to learn :) 
Photo of @goodstruggles

@goodstruggles

  • 15 Posts
  • 1 Reply Like
I agree. This would be incredibly handy. I would love to have action sets for our design team (image treatments, mockups, etc) and (crop actions, wireframe template storage) for the web team.
Photo of Ron Ibarra

Ron Ibarra

  • 2 Posts
  • 0 Reply Likes
Hello Pedro, I know this is an old topic but you seem to have a lot of the answers that I am currently looking for. Particularly on how to set it up to where I can update the scripts / share across multiple stations without breaking referenced filepaths to linked files and such. Hope it makes sense, would love to ask you a few questions in regards to that part of the process and I have just recently started to learn scripting. 
Photo of Pedro Marques

Pedro Marques

  • 169 Posts
  • 26 Reply Likes
There are several solutions. 
If you have a common network where your computers are in, you can use a central folder to be mirrored to a folder on each computer each time photoshop starts.
My solution was implemented only on windows, and the folder on each PC to mirroed from the central folder I use the Public folder (available to all users account on each computer)

You don't really need a script to mirror the folder with all its content. Another solution could be created by a command line that updates all the files for you from a central folder (if you have an IT manager you can ask him to do that for you)

If you need only to update the actions, you can centralize the file "Actions Palette.psp". This file is stored inside the personal photoshop settings of a user.
When you pick the "Actions Palette.psp" of another user and put it in your photoshop settings, your photoshop will load all those new actions from the other user. 
The advantage is that you don't need to use any *.ATN files. "Actions Palette.psp" is a file containing all the inner action Sets and all its actions embedded.

So, any IT guy can set windows to load a common "Actions Palette.psp" file and put it in the Photoshop user settings when windows start.
(each version of Photoshop have different folder settings, so all the users must work with the same photoshop version)

Photo of Ron Ibarra

Ron Ibarra

  • 2 Posts
  • 0 Reply Likes
Hello Pedro, thank you for the response. We do have a central server that we use, but I am also the one that manages it. Currently the main issue is that when I send out actions with file paths embedded or linked - everyone that installs them needs to run the linking step and have to delink the files and such.

I was looking to scripting to see if I can amend the filepaths of the actions to be more fluid? Like say - get from server filepath instead of the concrete pathts that photoshop actions give which reference the user and what not. Hope that makes sense.

I haven’t worked with actions palette before since I always find I have to save down the groups and then open those atn files to install them. Is palette a more efficient way of doing this then? Does it port all of the actions in a package or?

Sorry I have so many questions - I really appreciate you taking the time to guide me in the right direction, as we work on Mac our server is much more difficult to maneuver around for me due to lack of understanding.
Photo of Pedro Marques

Pedro Marques

  • 169 Posts
  • 26 Reply Likes
Hi,
on a group of Macs connected to a network I would do the same logic:

1. common folder somewhere in the network where all the original files are to be placed on each computer
2. a script (apple script) to transfer(copy) all the files from the central folder to the User Shared folder in each mac computer. This can be done either when the computer starts, or photoshop starts.
3. All the Actions, filepaths references, etc, will always point not the central folder but the user shared folder: this folder on Mac is 
Folder("/Users/Shared")
Using a reference to this folder will always make sure that any logged User account accesses the Shared folder.

Resume:
A) copy central folder contents to Folder("/Users/Shared") = updated!
B) only after A) finished successfully, photoshop will start (or restart) and automatically run a startup script to install the actions, assets, etc needed to work.

This is the simplest way to centralize everything.

Note: on Mac, there are some specific limitations due to access privileges so I don't know if the transfer of files can be defensively blocked by the system.  
Photo of Max Johnson

Max Johnson, Champion

  • 544 Posts
  • 283 Reply Likes
I used to have .jsx scripts copy and update the photoshop scripts folder, but file permissions changed with either Win 10 or photoshop 2017 so the installation folder is admin access required. Short of having batch files that run as admin or some kind of native installer, users have to manually copy updated scripts if they want them in the file menu.
Photo of @goodstruggles

@goodstruggles

  • 15 Posts
  • 1 Reply Like
Yes, this would be fabulous! Please consider implementing. :-)
Photo of Thomas Hilstad

Thomas Hilstad

  • 1 Post
  • 0 Reply Likes
This reply was created from a merged topic originally titled Photoshop: Ability to share actions through Libraries.

Photoshop actions would be great to be able to share with other members in a team through CC libraries.
Photo of @goodstruggles

@goodstruggles

  • 15 Posts
  • 1 Reply Like
This reply was created from a merged topic originally titled Photoshop: Ability to save actions to Creative Cloud Libraries.

I have no idea IF this can be done, but for those of us that work with tons of mockups and repetitive actions, this would be really handy. Also, it would allow us to share image treatment actions with teammates.