3 Replies Latest reply on Dec 27, 2015 1:05 PM by Trevorׅ

    I need to add in a page size text variable to my already working .jsx script

    scottr93836726

      Hi all,

       

      I was wondering if any of you scripters would know how to add in a piece of code that would allow me to generate a page size variable,

       

      I have already found a script that adds in a user name to my slug but i dont know how to add one for page size as im not fluent in JavaScript.

       

      Any help would be much appreciated!! see current script below:

      ----------------------------------------------------------------------------------

       

      #targetengine 'usernameVariable'

       

       

      //This function adds static text variables in InDesign

      //They won't be dynamically updated though.

      //That's why we need the updating function below

       

      function addVariables(openEvent){

         

          var doc = openEvent.parent;

         

          while ( doc.constructor.name != "Document" )

          {

              if ( doc.constructor.name == "Application" ){ return; }

            

             doc = doc.parent;

          }

         

          //Adding User name to text variables

          createTextVariable(doc, "User name", (Folder.myDocuments).parent.displayName );

         

          //Adding Computer name to text variables

          createTextVariable(doc, "HD Name", (Folder.system).parent.displayName );

         

          //Adding Computer name to text variables

          createTextVariable(doc, "Computer Name", getComputerName() );

         

          //Adding a link to my website

          createTextVariable(doc, "_About Loic Aigon", "Feel free to visit my website: http://www.loicaigon.com !" );

         

      }

       

      //Generic function to add static custom text variables

      function createTextVariable(target, variableName, variableContents){

         

          var usernameVariable = target.textVariables.itemByName(variableName);

          if(!usernameVariable.isValid){

              usernameVariable = target.textVariables.add();

              usernameVariable.variableType = VariableTypes.CUSTOM_TEXT_TYPE;

              usernameVariable.name = variableName;

          }

          usernameVariable.variableOptions.contents = variableContents;

      }

       

       

       

      //Snippet for grabbing the  deep name of the computer

      function getComputerName(){

         

          var APLScript = "get computer name of (system info)";

          var VBScript = "Dim wshShell\

          Set wshShell = CreateObject( \"WScript.Shell\" )\

          strComputerName = wshShell.ExpandEnvironmentStrings( \"%COMPUTERNAME%\" )\

          app.scriptArgs.SetValue \"computerName\", strComputerName";

       

          var scpt = (File.fs=="Windows")? VBScript : APLScript;

          var language = (File.fs=="Windows")? ScriptLanguage.visualBasic : ScriptLanguage.APPLESCRIPT_LANGUAGE;

       

          var scriptResult = app.doScript(scpt, language);

       

          var computerName = (File.fs=="Windows")? app.scriptArgs.getValue("computerName") : scriptResult;

       

          return computerName;

      }

       

      //Add listeners to update file when opened.

      app.addEventListener('afterOpen', addVariables);

        • 1. Re: I need to add in a page size text variable to my already working .jsx script
          Trevorׅ Adobe Community Professional

          If all the pages are the same size then you can use the below, if not then I would not recommend using text variables

          See The intro comments

          // https://forums.adobe.com/thread/2049382
          // Main script by Loic Aigon Add highly customized Text Variables to InDesign | Ozalto
          // Additions (First Page Dimensions and variable update on script execution)
          // and modifications (without permission, sorry Loic) by Trevor http://www.creative-scripts.com
          #targetengine 'usernameVariable'
          
          //This function adds static text variables in InDesign
          //They won't be dynamically updated though.
          //That's why we need the updating function below
          
          function toTitleCase(s) { // By Trevor
              return s.toLowerCase().replace(/\b\w/g, function () {return arguments[0].toUpperCase()});
          }
          
          function myRound(thisNumber, digits) { // By Trevor
                  digits = (digits) ? Math.pow(10, digits) : 1000;
                  return Math.round(thisNumber * digits) / digits;
          }
          
          function addVariables(openEvent){
              if (!openEvent) return;
              var doc = (openEvent.constructor == Document) ? openEvent : openEvent.parent; // By Trevor
              while ( doc.constructor.name != "Document" )
              {
                  if ( doc.constructor.name == "Application" ){ return; }
          
                 doc = doc.parent;
              }
          
              //Adding User name to text variables
              createTextVariable(doc, "User name", $.getenv($.os[0] == "M" ? "USER" : "username") ); // changed by Trevor
              //Adding Computer name to text variables
              createTextVariable(doc, "HD Name", (Folder.system).parent.displayName );
          
              //Adding Computer name to text variables
              createTextVariable(doc, "Computer Name", getComputerName() );
          
              //Adding a link to my website
              createTextVariable(doc, "_About Loic Aigon", "Feel free to visit my website: http://www.loicaigon.com !" );
          
              //Adding a link to my website
              createTextVariable(doc, "_About Trevor", "Feel free to visit my website: http://www.creative-scripts.com !" ); // by Trevor
          
              //Adding First Page Dimensions
              createTextVariable(doc, "First Page Dimensions", getPageDimentions(doc.pages[0])); // by Trevor
          
          }
          
          addVariables(app.properties.activeDocument); // callback by Trevor
          
          //Generic function to add static custom text variables
          function createTextVariable(target, variableName, variableContents){
          
              var usernameVariable = target.textVariables.itemByName(variableName);
              if(!usernameVariable.isValid){
                  usernameVariable = target.textVariables.add();
                  usernameVariable.variableType = VariableTypes.CUSTOM_TEXT_TYPE;
                  usernameVariable.name = variableName;
              }
              usernameVariable.variableOptions.contents = variableContents;
          }
          
          
          //Snippet for grabbing the  deep name of the computer
          function getComputerName(){ // by Trevor
              return $.os[0] == "M" ? app.doScript("get computer name of (system info)", ScriptLanguage.APPLESCRIPT_LANGUAGE) : $.getenv("computername");
          }
          
          function getPageDimentions(page){ // by Trevor
              var width, height, bounds, units, decPlaces;
              // function presumes that normal pages
              // i.e. same vertical and horizontal and no page shape transformations
              decPlaces = 3;
              units = toTitleCase(page.parent.parent.viewPreferences.horizontalMeasurementUnits.toString()); // If you forgot to include the toTitleCase function then remove the method
              bounds = page.bounds;
              height = bounds[2] - bounds[0];
              height = myRound(height, decPlaces);
              width = bounds[3] - bounds[1];
              width = myRound(width, decPlaces);
              return width + " X " + height + " " + units
          }
          
          //Add listeners to update file when opened.
          app.addEventListener('afterOpen', addVariables);
          // You might like to add some or all of these to make the update better
          app.addEventListener('beforeSave', addVariables); // by Trevor
          app.addEventListener('beforeSaveAs', addVariables); // by Trevor
          app.addEventListener('beforeSaveACopy', addVariables); // by Trevor
          app.addEventListener('beforeExport', addVariables); // by Trevor
          app.addEventListener('beforePrint', addVariables); // by Trevor
          app.addEventListener('beforeDeactivate', addVariables); // by Trevor
          app.addEventListener('afterActivate', addVariables); // by Trevor
          
          • 2. Re: I need to add in a page size text variable to my already working .jsx script
            scottr93836726 Level 1

            This is Fantastic, thank you so much, just a couple more questions,

             

            is there anyway to get the unit to display as "mm, in, px etc...." instead of Millimeters, Inches, Pixels,

             

            also is there anyway that this script could look at the pahe size tool sizes instead of document setup sizes incase of multipage docs?

             

            and also can bleed size be added?

             

            Thanks again!!!

            • 3. Re: I need to add in a page size text variable to my already working .jsx script
              Trevorׅ Adobe Community Professional

              Hi Scott

               

              mm, in etc. would be very easy as would bleed size.

               

              If you want a page size variable that shows the size of each page that it appears on then you would need  a c++ custom plugin that would be quite expensive.

              In my opinion what you need is a script that adds a textFrame in the bleed of each page of the document with the info that you want and not use variables.

              This is a scripting forum which is for scripters to learn / share about scripting and not a script request forum.

               

              For script requests I personally highly recommend Contact | Creative-Scripts.com some might say that as the site owner I'm biased.

              Wouldn't cost a fortune.

               

              I've got the flue and going to bed soon so don't expect any speedy response.

               

              Regards

               

              Trevor