Switch Photoshop Javascript - error 45

Post Reply
rvandermueren
Newbie
Posts: 2
Joined: Tue Feb 05, 2013 9:26 pm

Switch Photoshop Javascript - error 45

Post by rvandermueren »

Hi,



I have created a javascript for Switch which does some checks in Photoshop and write some text to logfiles.



It works but I get the following error:



Script returned error: /tmp/SWITCH_applescript__461e7616:236:248: execution error: Adobe Photoshop CC 2014 got an error: General Photoshop error occurred. This functionality may not be available in this version of Photoshop. - Error 45: Object is invalid.Line: 198-> if(($error == null) && ($doc != null)) (8800)


I have tried several things but can't find what is causing this error. Does anyone have an idea?



Thanks,

Raymond.



----



The Switch Photoshop element has the following settings:

- Save as: Use script

- Script file: see below

- Argument 1: [Job.NameProper:Before=_]

- Arugment 2: [Job.Path]

- Arugment 3: [Job.NameProper].[Job.Extension]



Photoshop filenames are like: 11105202_S_LD.psd, 11105203_LD.psd



----



#target photoshop

#include "/Users/admin/Documents/Photoshop_Scripts/layerMaskLib.9.js"



//Set units to pixels.

var originalUnit = preferences.rulerUnits;

preferences.rulerUnits = Units.PIXELS;

app.displayDialogs = DialogModes.NO



var myDoc = $doc;

var docName = myDoc.name;

var fileName = $arg3;

var itemNumber = $arg1;

var psdSource = new File($arg2);

var psdCopy = new File ("/Volumes/ServerHD2/Switch Folders/Linedrawings/01_Separate_Layers/" + fileName);

var psdError = new File ("/Volumes/ServerHD2/Switch Folders/Linedrawings/Error/" + fileName);

var logDir = '/Volumes/ServerHD2/Switch Folders/Linedrawings/Logs/';

var layerLog = new File('/Volumes/ServerHD2/Switch Folders/Linedrawings/Logs/photoshopLayers.txt');

var destFolder = "/Volumes/ServerHD2/Switch Folders/Linedrawings/01_Separate_Layers/";



//Get number of available layers

var docLayer = myDoc.artLayers;

var numberLayers = docLayer.length;



//Set photoshop save options

var psdSaveAs = new PhotoshopSaveOptions();

psdSaveAs.alphaChannels=false;

psdSaveAs.layers=true;



//Check if file contains layers and close/remove file when not.

if (numberLayers == 0) {

errorLog = new File(logDir + fileName + '_error.txt');

errorLog.open('a');

errorLog.writeln(fileName + "No layers in document");

errorLog.close();

activeDocument.close(SaveOptions.DONOTSAVECHANGES);

psdSource.remove();

}



/*Loop through alll layers to get and check their names .

Only "product", "reflection", "shadow" or 10_20_30 formatted layer names are allowed.

*/

if (numberLayers > 0) {

try{



for (var i=0; i<numberLayers; i++) {

var layer = docLayer.name;

var decoLayer = String(docLayer.name);

var splitLayerName = decoLayer.split('_');

var splitDocName = docName.split('_');

var checkMethodNumber = parseInt(splitLayerName[0]);



if (isNaN(checkMethodNumber)) {

if (layer == 'product') {

}else{



if (layer == 'shadow') {

}else{



if (layer == 'reflection') {

}else{

var coppied = psdSource.copy(psdError) ;

if (coppied == true && psdError.exists) {

errorLog = new File(logDir+fileName+'_error.txt');

errorLog.open('a');

errorLog.writeln(fileName+"; Contains layer(s) with wrong name(s)! or misses required product layer!");

errorLog.close();

myDoc.close(SaveOptions.DONOTSAVECHANGES);

psdSource.remove();

}

}

}

}

}else{

}

}

var coppied = psdSource.copy(psdCopy) ;

if (coppied == true && psdCopy.exists) {

myDoc.close(SaveOptions.DONOTSAVECHANGES);

psdSource.remove();

}

//Reset preferences to original state

app.preferences.rulerUnits = originalUnit;

}

catch (e)



{

var errorFile = new File('/Volumes/Macintosh HD/Users/admin/Documents/Logs/switch-error.log');

errorFile.open(e);

errorFile.writeln(e);

errorFile.close();

//return theError

}

}
dkelly
TOP CONTRIBUTOR
Posts: 628
Joined: Mon Nov 29, 2010 8:45 pm
Location: Alpharetta GA USA
Contact:

Switch Photoshop Javascript - error 45

Post by dkelly »

Your script doesn't contain line: 198 nor does it contain the line that errored: if(($error == null) && ($doc != null))



so it appears that the problem is inside of the included script layerMaskLib.9.js
rvandermueren
Newbie
Posts: 2
Joined: Tue Feb 05, 2013 9:26 pm

Switch Photoshop Javascript - error 45

Post by rvandermueren »

I have removed the include, but still get the error referring to a line number not in the script.



Thanks,

Raymond.
User avatar
gabrielp
Advanced member
Posts: 577
Joined: Fri Aug 08, 2014 4:31 pm
Location: Boston
Contact:

Switch Photoshop Javascript - error 45

Post by gabrielp »

Probably not it, but do you have the ExtendScript Toolkit installed on that machine? I know its needed for some scripting from Switch...
Chat: open-automation @ gitter
Code: open-automation & dominickp @ GitHub
Tools: Switch, Pitstop, EPMS, Veracore, PageDNA, SmartStream, Metrix
User avatar
andrea mahoney
Newbie
Posts: 19
Joined: Tue Jan 25, 2011 8:53 pm

Switch Photoshop Javascript - error 45

Post by andrea mahoney »

CC 2014 is only compatible with Switch 12 update 3. Do you have the latest update running?
Post Reply