Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Javascript file names on Mac

New Here ,
Feb 20, 2018 Feb 20, 2018

Hi All:

I have a javascript that creates new files on windows and mac.  On the windows side it creates a file name ok and calls it B5177-123-My style.ai

on the mac side the same exact script pulled from same location creates a file name that on the Mac looks similar except it includes the last folder name I told it to store in so if desktop it will store it one folder level up and call it desktop\B5177-123-My style.ai  but if I copy it to our mutual win/mac server the file name shows up as D23458A~.ai

Any help would be greatly appreciated.  Script is included if that helps.   I bolded the section that is most likely causing the problem.

THanks,

Ron

#target illustrator

//  for this code to work it must have 12 items in each row seperated by tabs.

// items are  order#,custcd,customer name, style-colour, style desc,colour,emb type, placement,unused,unused,style file name including path,comments, embcode

// 0 1      2 3       4 5   6 7    8 9      10 11 12

function testBtnOnClick() {

  

   // this.parent.buildBtn.enabled = true;

    //this.parent.make1Btn.enabled = true;

var dlg = this.parent.parent;

    var mydata = calculateApprovalsVG(this.parent.parent.msgEt.text);

//var data = showdata(mydata);

    //var data = mydata;

    //    debugger;

    //dlg.dataStore = mydata;

//dlg.CADLoc = parseCADLoc(dlg.msgCAD.text);

//fillList(dlg, data);

    }

// pick folder for saving completed forms

// what is this?  looks same as routine above

function main() {

var thisC = this;

    this.dlg = new Window('dialog', 'Paste document data below');

this.dlg.dataStore = new Array();

this.dlg.CADLoc = new Array();

     this.dlg.size = {width: 1000, height: 570};

     this.dlg.msgEt =  this.dlg.add('edittext', undefined,  '', {multiline:true});

    this. dlg.msgEt.size = {width: 970, height: 500};

//this.dlg.msgCAD =  this.dlg.add('edittext', undefined,  '<CAD Location Data>', {multiline:true});

    //this. dlg.msgCAD.size = {width: 970, height: 100};

//this. dlg.msgCAD.alignment = 'left';

//this.dlg.listBox =  this.dlg.add('listbox', undefined, 'formListBox', {multiselect:true});

//this.dlg.listBox.alignment = 'right';

//this.dlg.listBox.size = {width: 970, height: 200};

//this.dlg.listBox.alignChildren = 'top';

//this.dlg.listBox.formItems = new Array();

     this.dlg.btnPnl =  this.dlg.add('panel', undefined, );

     this.dlg.btnPnl.orientation = 'row';

     this.dlg.btnPnl.alignment = 'right';

     this.dlg.btnPnl.testBtn =  this.dlg.btnPnl.add('button', undefined, 'Make All Forms')

     //this.dlg.btnPnl.buildBtn =  this.dlg.btnPnl.add('button', undefined, 'Make All Forms');

     //this.dlg.btnPnl.buildBtn.enabled = false;

//'this.dlg.btnPnl.make1Btn =  this.dlg.btnPnl.add('button', undefined, 'Make Selected Forms');

     //'this.dlg.btnPnl.make1Btn.enabled = false;

     //'this.dlg.btnPnl.make1Btn.onClick = make1BtnBtnOnClick;

     this.dlg.btnPnl.cnclBtn =  this.dlg.btnPnl.add('button', undefined, 'Done', {name:'cancel'});

     this.dlg.btnPnl.testBtn.onClick = testBtnOnClick;

     //this.dlg.btnPnl.buildBtn.onClick = buildBtnOnClick;

this.dlg.show();

}

// Saves the current document to dest as an AI file with specified options,

// dest specifies the full path and file name of the new file

function exportFileToAI (dest, docRef) {

    if ( app.documents.length > 0 ) {

        var saveOptions = new IllustratorSaveOptions();

        var aiDoc = new File(dest);

        saveOptions.compatibility = Compatibility.ILLUSTRATOR15;

        saveOptions.flattenOutput = OutputFlattening.PRESERVEAPPEARANCE;

        docRef.saveAs( aiDoc, saveOptions );

    }

}

//

//

//

//              *  validate the data and unless errors proceed now!

//

//

function calculateApprovalsVG(spreadsheet) {

               

            //var spreadsheet = document.barcodegen.spreadsheet.value;

var spreadsheetRows = spreadsheet.split("\n");

var columnArray = new Array();

var xx = 0;

var mydata = new Array();

var m = 0;

// Iterate over the rows and break them down into their columns

var spreadsheetRowsCols = new Array();

//var firstsize = 0;

//var isItSize;

               

for (var i in spreadsheetRows) {

spreadsheetRowsCols = new Array();

spreadsheetRowsCols = spreadsheetRows.split("\t");

                    xx = spreadsheetRowsCols.length

                      if(spreadsheetRowsCols.length<11){

                         

                    alert("Row "+ i + " must be 12 tabbed items in the list for this to work. Last good order was " +spreadsheetRowsCols[i-1][0],"Big problemo! On strike til you fix this!");

                    return;

                    

                    }

            //    if (spreadsheetRowsCols[9].exists){

              //      alert("File not found "+spreadsheetRowsCols[9] +" aborting!");

                //   }

                }

               

               

//     

// lets try and place the whole thing in here and make it use first array!

//

   

var destFolder = null;

destFolder = Folder.selectDialog( 'Please select the folder to save the forms to.', '~' );

    alert( destFolder );

var tempFile = null;

tempFile = File.openDialog( 'Please choose the template file.', '*.ai' );

   

if(tempFile) {

var theTemplate = tempFile.fsName;

for(var i in spreadsheetRows) {

if(spreadsheetRows ){

//alert(i + ': ' + mainframe.dataStore['client'] + ' - ' + mainframe.dataStore['style']);

var theStyle = spreadsheetRowsCols[3];

var theCAD = spreadsheetRowsCols[9];

//alert(theStyle + ': ' + theCAD);

var notset;

if(theCAD == notset) theCAD = '';

makeSingleForm(spreadsheetRowsCols, destFolder, tempFile, theCAD);

}

}

}

               

               

               

               

               

             alert("Processing Complete","All files were created!");  

            }

function makeSingleForm(artformData, destFolder, theTemplate, theCAD) {

//alert(artformData['scs']);

// File Name

// Point Text

//alert(theTemplate);

var docRef = open(theTemplate);

// Client y: 595 from bottom, 63

var pointTextClient = docRef.textFrames.add();

pointTextClient.contents = artformData[2];

pointTextClient.top = -65;

pointTextClient.left = 550;

pointTextClient.selected = false;

// Licensor Name

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[8];  // this needs to be fixed or dropped

pointTextStyle.top = -80;

pointTextStyle.left = 550;

pointTextStyle.selected = false;

   

// Order #

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[0];  // this needs to be fixed or dropped

pointTextStyle.top = -100;

pointTextStyle.left = 115;

pointTextStyle.selected = false;

   

// application - artwork code descriptions

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[6];

pointTextStyle.top = -163;

pointTextStyle.left = 96;

pointTextStyle.selected = false;

// artwork code EMB Code

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[11];

pointTextStyle.top = -65;

pointTextStyle.left = 116;

pointTextStyle.selected = false;

// Comments

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[10];

pointTextStyle.top = -125;

pointTextStyle.left = 60;

pointTextStyle.selected = false;

// Placement

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[7];

pointTextStyle.top = -150;

pointTextStyle.left = 95;

pointTextStyle.selected = false;

// Garment: Style / Colour / Size Breakdown

var pointTextStyle = docRef.textFrames.add();

pointTextStyle.contents = artformData[3]+" "+artformData[4] +" "+artformData[5];

pointTextStyle.top = -80;

pointTextStyle.left = 116;

    //pointTextStyle.width = 100;

    //pointTextStyle.height = 40;

pointTextStyle.selected = false;

    // Product colour

//var pointTextColor = docRef.textFrames.add();

//pointTextColor.contents = artformData[5];

//pointTextColor.top = 95;

//pointTextColor.left = 203;

//pointTextColor.selected = false;

/*

var pointTextBreakdown = docRef.textFrames.add();

pointTextBreakdown.contents = artformData['scs']['breakdown'];

pointTextBreakdown.top = 453;

pointTextBreakdown.left = 311;

pointTextBreakdown.selected = false;

redraw();

*/

if (theCAD != '') {

//alert(theCAD);

       //  if (theCAD.exists){

var cadRef = open(File(theCAD));

doc=activeDocument;

for (i=0; i<doc.layers.length; i++){doc.layers.hasSelectedArtwork=true;} // select all

copy();//

doc.close( SaveOptions.DONOTSAVECHANGES );

docRef.layers.add();

        docRef.activeLayer = docRef.layers.getByName("Layer 2");

        

paste(); //

// end original code

//}else{

//alert(theCAD+" File can't be located for "+artformData[0] );

//return

//}

}

var dest = destFolder + "\\" + artformData[1] + '-' + artformData[3] + '.ai';

//alert(dest);

exportFileToAI (dest, docRef) ;

docRef.close( SaveOptions.DONOTSAVECHANGES );

}

var mainframe = new main();

TOPICS
Scripting
618
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
People's Champ ,
Feb 21, 2018 Feb 21, 2018

You are probably having issues with file path separators. On Mac, it's a slash "/" when on Windows it could be a backslash ("\").

So if you want to use teh script on both platforms, you may need to choose a specific separator given the os.

var os = $.os;

var isMac = os[0]=="M";

var sep = isMac? "/" : "\\";

But given that in your case destFolder uses the specific selectDialog methods, the url even on windows should be returned with "/" like in "/c/myFolder" and using regular slashes shouldn't be an issue on both platforms:

var destFolder = null;

destFolder = Folder.selectDialog( 'Please select the folder to save the forms to.', '~' );

var destFile = File ( destFolder+"/foo/bar" );

HTH

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Valorous Hero ,
Feb 21, 2018 Feb 21, 2018
LATEST

What's up with the line:

Folder.selectDialog( 'Please select the folder to save the forms to.', '~' );

containing the tilde? selectDialog has only the prompt string parameter specified in the OMV.

Folder.selectDialog (prompt: string 😞 Folder

Core JavaScript Classes

Opens the built-in platform-specific file-browsing dialog, and creates a new File or Folder object for the selected file or folder.

Differs from the object method selectDlg() in that it does not preselect a folder.

If the user clicks OK, returns a File or Folder object for the selected file or folder.

If the user cancels, returns null.

prompt: Data Type: string

The prompt text, if the dialog allows a prompt.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines