Switch Photoshop Javascript - error 45
Posted: Tue Feb 03, 2015 4:33 pm
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
}
}
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
}
}