From Photoshop actions to Photoshop scripting?

Let me answer the question you actually asked in bold: There is a tool that automatically generates the Javascript for the actions and events that are taking place in Photoshop. It is called the Script Listener. After using the script listener to record your actions, review the log and make your selective edits.

To begin using the Script Listener

  1. Close Photoshop
  2. Copy the ScriptListener.8li file from the C:\Program Files\Adobe\Adobe Photoshop CS5\Scripting\Utilities folder
  3. Paste the file to the C:\Program Files\Adobe\Adobe Photoshop CS5\Plug-ins\Automate folder.
  4. Run Photoshop, perform actions you want to happen in your script.
  5. Close Photoshop, delete the copy of the script listener from the Automate folder.
  6. Edit the log file that is placed on your desktop by the script listener.

To get your new fangled script into Photoshop place the file you've created with a jsx extension into C:\Program Files\Adobe\Adobe Photoshop CS5\Presets\Scripts.


I made a script which does the required job:

#target photoshop
#strict on

runthis();
function runthis()
{
    var path = "/d/PhotoshopScript/Images/";

     var inputFolder = new Folder(path );
    var inputFiles = inputFolder.getFiles("*.png");

    for(index in inputFiles)
    {
        // open the file
        var fileToOpen = new File(inputFiles[index]);
        open(fileToOpen);

        // Change mode to rgb
        activeDocument.changeMode(ChangeMode.RGB);
        // add a new layer
        activeDocument.artLayers.add();

        //save
        var psdOptions = new PhotoshopSaveOptions();
        psdOptions.alphaChannels = true;
        psdOptions.annotations = false;
        psdOptions.embedColorProfile = false;
        psdOptions.layers = true;
        psdOptions.spotColors = false;

        var file = new File(path + GetFileName(String(inputFiles[index])));
        activeDocument.saveAs(file, psdOptions);

        activeDocument.close();

        // dispose
        fileToOpen = null;
        psdOptions = null;
        file  = null;
    }
    // dispose
    inputFolder = null;
    inputFiles = null;

}

function GetFileName(fullPath)
{
    var m = fullPath.match(/(.*)[\/\\]([^\/\\]+)\.\w+$/);
    return m[2];
}

It can be improved in many ways, but I hope it helps.