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

Renaming Artwork Automatically

New Here ,
Dec 02, 2009 Dec 02, 2009

I need to find a script that will rename the imported artwork files.

I have many artwork files with different names, that I would like to rename to a project number, and then relink them into the document.

I would first "package" the document to get the files into one common folder. Once the files are in one link folder, I would like to rename and link them to that project.

The script must allow me to assign the base file name.

TOPICS
Scripting
6.2K
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

correct answers 1 Correct answer

Valorous Hero , Dec 02, 2009 Dec 02, 2009

Hi Bill,

Here is the script. It renames linked image files on page by page basis. At start a dialog  pops up asking you to enter a base name, then a confirmation dialog appears warning that all links in the current document are going to be renamed, and if you press Ok all links located on pages (not on master pages or pasteboard) are renamed like so :

WWAAU_001_a.jpg, WWAAU_001_b.jpg, WWAAU_001_c.jpg and so on.

Where: WWAAU — base name

001 —the number of the page where the image is placed

a, b, c

...
Translate
Participant ,
Jun 02, 2015 Jun 02, 2015

here is working script which can deal with MULTIPLE instances same link, also skip files on master pages...

var myDoc = app.activeDocument;

var myAllLinks = myDoc.allGraphics;

var myMultipleLinks = new Array();

var myMultipleLinksName = new Array();

var myLinksCounter = 1;

var myPrepend = prompt("Example: thebook_08765", "Job description", "Please enter job description");

if (!myPrepend) exit();

myPrepend += "_str_";

var response = confirm("Warning: You are about to rename all images linked to the foremost Indesign Document - proceed? Keep in mind - it is not reversible!", false, "Rename Links Script");

if ( response == true )

{

     WriteToFile("\r--------------------- Script started -- " + GetDate() + " ---------------------\n\n");

    

     for ( k = 0; k < myAllLinks.length; k++ )

     {

         if(myAllLinks.itemLink == null){

             myAllLinks.splice(k,1);

             k--;

             continue;

          }

          var myLinkName = myAllLinks.itemLink.name;

     }

     crearLabels();

     var myPages = myDoc.pages;

     // Pages

     for ( p = 0; p < myPages.length; p++ )

     {

          var myPageNumber = pad000(myPages

.name);

          var myLinks = myPages

.allGraphics;

          var myASCII = 97;

          for ( k = myLinks.length - 1; k >= 0; k-- )

          {

               var myLink = myLinks.itemLink;

               if (myLink.extractLabel("relinked") != "yes") {

                    var myOldLinkName = myLink.name;

                    var myLinkUsage = LinkUsage( myLink );

                    var myExtension = myOldLinkName.substr(myOldLinkName.lastIndexOf( "." ));

                    if (LinkUsage(myLink) == 1)

                    {

                         var myNewLinkName = myPrepend + myPageNumber + String.fromCharCode( myASCII ) + myExtension;

                         var myOldImageHDfile = new File( myLink.filePath );

                         var myRenameResult = myOldImageHDfile.rename( myNewLinkName );

                         if (myRenameResult)     {

                              myLink.insertLabel("relinked", "yes");

                              myLink.relink( myOldImageHDfile );

                              try {

                                   myLink = myLink.update();

                              }

                              catch(err) {}

                              myASCII++;

                              WriteToFile(((myLinksCounter < 10) ? (" " + myLinksCounter) : myLinksCounter) + " - " + myOldImageHDfile.name + " --> " + myNewLinkName + "\n");

                              myLinksCounter++;

                         }

                         else {

                              if (new File(myOldImageHDfile.parent + "/" + myNewLinkName + myExtension).exists) {

                                   WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + " to " + myNewLinkName + " because the file already exists\n");

                              }

                              else {

                                   WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + "\n");

                              }

                         }

                    }

                    else {

                        if (!IsObjInArray(myLink, myMultipleLinks)) {

                              myMultipleLinks.push(myLink);

                              var myNewLinkName2 = myPrepend + myPageNumber + String.fromCharCode( myASCII ) + myExtension;

                              myMultipleLinksName.push(myNewLinkName2);

                              myASCII++;

                         }

                    }

               }

          }

     }

     var myMasterSpreads = myDoc.masterSpreads;

     // Master spreads

     for ( m = 0; m < myMasterSpreads.length; m++ )

     {

          var myMastSpr = myMasterSpreads;

          var myPageNumber = myMastSpr.name;

          var myPrefix = myMastSpr.namePrefix;

          var myLinks = myMastSpr.allGraphics;

          var myASCII = 97;

          for ( n = myLinks.length - 1; n >= 0; n-- )

          {

               var myLink = myLinks.itemLink;

               if (myLink.extractLabel("relinked") != "yes") {

                    var myOldLinkName = myLink.name;

                    var myExtension = myOldLinkName.substr(myOldLinkName.lastIndexOf( "." ));

                    if (LinkUsage(myLink) == 1)

                    {

                         var myLinkLetter = (myLinks.length == 1) ? "" : String.fromCharCode( myASCII );

                         var myNewLinkName = myPrepend + '_master_' + myPrefix + myLinkLetter + myExtension;

                         var myOldImageHDfile = new File( myLink.filePath );

                         var myRenameResult = myOldImageHDfile.rename( myNewLinkName );

                         if (myRenameResult) {

                              myLink.insertLabel("relinked", "yes");

                              myLink.relink( myOldImageHDfile );

                              try {

                                   myLink.update();

                              }

                              catch(err) {}

                              myASCII++;

                              WriteToFile(((myLinksCounter < 10) ? (" " + myLinksCounter) : myLinksCounter) + " - " + myOldImageHDfile.name + " --> " + myNewLinkName + "\n");

                              myLinksCounter++;

                         }

                         else     {

                              if (new File(myOldImageHDfile.parent + "/" + myNewLinkName + myExtension).exists) {

                                   WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + " to " + myNewLinkName + " because the file already exists\n");

                              }

                              else {

                                   WriteToFile("CAN'T RENAME LINK -- " + myOldImageHDfile.name + "\n");

                              }

                         }

                    }

                    else

                    {

                         if (!IsObjInArray(myLink, myMultipleLinks)) {

                              myMultipleLinks.push(myLink);

                              var myLinkLetter2 = (myLinks.length == 1) ? "" : String.fromCharCode( myASCII );

                              var myNewLinkName2 = myPrepend + '_master_' + myPrefix + myLinkLetter2 + myExtension;

                              myMultipleLinksName.push(myNewLinkName2);

                              myASCII++;

                        }

                    }

               }

          }

     }

     // Multiple images

     if (myMultipleLinks.length > 0) {

          for ( a = myMultipleLinks.length - 1; a >= 0; a-- )

          {

               processMultiUsedLinks(myMultipleLinks, myMultipleLinksName);

          }

     }

     WriteToFile("\r--------------------- Script finished -- " + GetDate() + " ---------------------\r\r");

    

     if (myLinksCounter == 0) {

          alert("No links have been renamed", "Rename Links Script");

     }

     if (myLinksCounter == 1) {

          alert("One link has been renamed", "Rename Links Script");

     }

     else if (myLinksCounter > 1) {

          alert(myLinksCounter  + " links have been renamed", "Rename Links Script");

     }

}

//--------------------------------------------- Functions ------------------------------------------------

// Check how many times the link was placed

function LinkUsage(myLink) {

     var myLinksNumber = 0;

          for (var c =  0; c < myDoc.links.length; c++) {

          if (myLink.filePath == myDoc.links.filePath) {

               myLinksNumber += 1;

          }

     }

     return myLinksNumber;

}

//--------------------------------------------------------------------------------------------------------------

// Relink the links placed more than once

function processMultiUsedLinks(myLink, naziv) {

     var myExtension = "";

     var myMultiUsedLink = new Array();

     var myAllLinks = myDoc.links;

     for (var d = 0; d < myAllLinks.length; d++)  {

          if (myAllLinks.filePath == myLink.filePath) {

               myMultiUsedLink.push(myAllLinks);

          }

     }

     try {

          myLink.show();

     }

     catch(err) {}

    

     var myNewLinkName = naziv; //prompt ("Enter a name for this image", GetFileNameOnly(myLink.name), "This image is placed " + myMultiUsedLink .length + " times");

     if (myNewLinkName) {

          if ( myNewLinkName + myExtension != myLink.name ) {

               var myOldImageHDfile = new File( myLink.filePath );

               var myRenameResult = myOldImageHDfile.rename( myNewLinkName + myExtension );

               if (myRenameResult) {

                    myLink.insertLabel("relinked", "yes");

                    myLink.relink( myOldImageHDfile );

                    try {

                         myLink = myLink.update();

                    }

                    catch(err) {}

                   

                    WriteToFile(((myLinksCounter < 10) ? (" " + myLinksCounter) : myLinksCounter) + " - " + myOldImageHDfile.name + " --> " + myNewLinkName + "\n");

                    myLinksCounter++;

                    for (f = myMultiUsedLink.length-1; f >= 0 ; f--)

                    {

                         var myCurrLink = myMultiUsedLink;

                         if ( myNewLinkName + myExtension != myCurrLink.name ) {

                              myCurrLink.insertLabel("relinked", "yes");

                              myCurrLink.relink( myOldImageHDfile );

                              try {

                                   myCurrLink = myLink.update();

                              }

                              catch(err) {}

                         }

                    }

               }

               else     {

                    if (new File(myOldImageHDfile.parent + "/" + myNewLinkName + myExtension).exists) {

                         $.writeln("CAN'T RENAME LINK -- " + myOldImageHDfile.name + " to " + myNewLinkName + myExtension + " because the file already exists\n");

                    }

                    else {

                         $.writeln("CAN'T RENAME LINK -- " + myOldImageHDfile.name + "\n");

                    }

               }

          }

     }

     UpdateAllOutdatedLinks();

}

//--------------------------------------------------------------------------------------------------------------

// Clear labels in case this script has been already run on the current document

function crearLabels() {

     for (var f =  0; f < myDoc.links.length; f++) {

          if (myDoc.links.extractLabel("relinked") != "") {

               myDoc.links.insertLabel("relinked", "");

          }

     }

}

//--------------------------------------------------------------------------------------------------------------

function UpdateAllOutdatedLinks() {

     for(var myCounter = myDoc.links.length-1; myCounter >= 0; myCounter--){

          var myLink = myDoc.links[myCounter];

          if (myLink.status == LinkStatus.linkOutOfDate){

               myLink.update();

          }

     }

}

//--------------------------------------------------------------------------------------------------------------

function pad000(myNumber) {

     if (myNumber >= 1 && myNumber <= 9) {

          x =  "0" + "0" + myNumber;

     } else if (myNumber >= 10 && myNumber <= 99) {

          x = "0" + myNumber;

     } else if (myNumber >= 100 && myNumber <= 999) {

          x = myNumber;

     }

     return x;

}

//--------------------------------------------------------------------------------------------------------------

function GetFileNameOnly(myFileName) {

     var myString = "";

     var myResult = myFileName.lastIndexOf(".");

     if (myResult == -1) {

          myString = myFileName;

     }

     else {

          myString = myFileName.substr(0, myResult);

     }

     return myString;

}

//--------------------------------------------------------------------------------------------------------------

function IsObjInArray(myObj, myArray) {

     for (x in myArray) {

          if (myObj.filePath == myArray.filePath) {

               return true;

          }

     }

     return false;

}

//--------------------------------------------------------------------------------------------------------------

function WriteToFile(myText) {

     myFile = new File("~/Desktop/Rename Links Script.txt");

     if ( myFile.exists ) {

          myFile.open("e");

          myFile.seek(0, 2);

     }

     else {

          myFile.open("w");

     }

     myFile.write(myText);

     myFile.close();

}

//--------------------------------------------------------------------------------------------------------------

function GetDate() {

     var myDate = new Date();

     if ((myDate.getYear() - 100) < 10) {

          var myYear = "0" + new String((myDate.getYear() - 100));

     } else {

          var myYear = new String ((myDate.getYear() - 100));

     }

     var myDateString = (myDate.getMonth() + 1) + "/" + myDate.getDate() + "/" + myYear + " " + myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds();

     return myDateString;

}

//--------------------------------------------------------------------------------------------------------------

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
New Here ,
Jan 15, 2016 Jan 15, 2016
LATEST

Hi .

This is a great script. I've been trying to find something as powerful as this. I'm not a scriptor.

There are a couple specifics that I"m looking for my needs.

I was curious if you might know how to modify this so that it would do certain file types?

I am trying to name all .tif files in sequence. And, all .psd files in sequence, etc.

I also don't need the naming to correspond to page number. In essence what I'm looking for naming is something like the following:

image001.jpg

image002.jpg

image003.jpg

image001.tif

image002.tif

image003.tif

image001.psd

image002.psd

image003.psd

Thanks in advance. Please let me know if this is at all possible.

Also, let me know if there's anything else you might need from me.

Thanks and cheers!

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
New Here ,
Mar 16, 2010 Mar 16, 2010

wow this looks complex, thanks so much for your help everyone

sorry for the multiple threads, I was concerned that the old threads I'd posted in were flagged as 'answered' so I made my own, but I didn't mean to swamp the forum, apologies.

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