JavaScript Cookbook
Below you wil find some examples of processors created to modify content and data with the JavaScript Processor.
Remediate Illegal Characters
Cleaning illegal characters on fields. This will fix file names that contain illegal character because many systems limit what character can be used as file names.
Copy
                                        
                                    
                                    var id = rd.get3SixtySourceRepositoryId(); 
//Remove the version from the document ID:
rd.addSingleField('shortId', id.substring(0, id.indexOf(':'))); 
//Grab fields we want to clean.
var name = rd.getFileName();
var title = rd.getDocumentField('Document.title');
var description = rd.getDocumentField('Document.description'); name = cleanText(name, true);
//Set the cleansed name.
rd.setFileName(name); 
//Check title
if (title != null) {
  var titleVal = title.getFieldValue();
  titleVal = cleanText(titleVal, false);
  rd.addSingleField('Document.title', titleVal);
} 
//Check desciption
if (description != null) {
  var descVal = description.getFieldValue();
  descVal = cleanText(descVal, false);
  rd.addSingleField('Document.description', descVal);
} 
//Function to clean illegal characters.
function cleanText(textToClean, isName) {
  textToClean = textToClean.replace(/[^\S ]/g, ' ');
  textToClean = textToClean.replace(/[—–‐]/g, '-');
  textToClean = textToClean.replace(/[“”]/g, "'");
  textToClean = textToClean.replace(/[^a-z0-9\- ()_\/\.\s'"{}&+]/gi, "_"); 
  //Additional clean up for document names. (Includes Encoding)
  if (isName) {
    textToClean = textToClean.replace('{', '%7B');
    textToClean = textToClean.replace('}', '%7D');
    textToClean = textToClean.replace(/['"]/g, '%27%27');
  }
  return textToClean;
}
                                        Set a Date Field Using Java Date
Use a Java Date field to set the date of a property if it does not exist.
Copy
                                        
                                    
                                    //Create a variable with the Java type.
var jDate = Java.type("java.util.Date"); 
var eventDate = rd.getDocumentField("Document.Event Date").getFieldValue(); 
//If the date does not exist on the document, use the current date.
if (!eventDate || eventDate == "") {
  eventDate = Date.now();
} rd.addSingleDateField("eventDate", new jDate(eventDate));
                                        Using a Switch Statement
Copy
                                        
                                    
                                    var region = rd.getDocumentField("Document.Region").getFieldValue(); 
switch (region) {
case "SE":
  region = "US - Southeast Region";
  break;
case "NE":
  region = "US - Northeast Region";
  break;
case "MW":
  region = "US - Midwest Region";
  break;
case "RM":
  region = "US - Rocky Mountain Region";
  break;
case "SW":
  region = "US - Southwest Region";
  break;
case "P":
  region = "US - Pacific Region";
  break;
default:
  region = "-Select-";
} rd.addSingleField("region", region);
                                        Remove Fields With No Value
Copy
                                        
                                    
                                    var map = rd.getFieldsMap();
for (i in map) { //Loop through all the keys in the map
  var val = map[i].getFieldValue(); //Grab the value of the DocumentField
  if (val === '') { //Check if the value is empty
    log.info('Removing ' + i);
    rd.removeField(i);
  } else {
    //do something else, or omit this else statement
  }
}
                                        Convert ACLs
This example converts box editors to google drive writers.
Copy
                                        
                                    
                                    if (rd.getACL() != null) {
  var newAcl = [];
  for (var i in rd.getACL()) {
    var acl = rd.getACL()[i];
    var split = acl.split('=');
    var nRole = ''
    if (split[1] === 'editor') {
      nRole = 'writer'
    } else {
      nRole = split[1];
    }
    newAcl[i] = split[0] + '=' + nRole;
  }
  rd.setACL(newAcl);
}
                                        Remove Folders From a Parent Path
Copy
                                        
                                    
                                    var skipFolders = 1; //This is how many folders to remove from the path
if (skipFolders > 0) {
  var absPath = rd.getPath(); //Retrieving the parent path of the document
  if (absPath.indexOf('/') === 0) { //Removing a leading slash, as they causes issues with the split
    absPath = absPath.substring(1);
  }
  var splitPath = absPath.split('/'); //Split the path into parts
  var parts = splitPath.length; //Check how many parts the path is
   
  var nupath = []; //Create an array to contain the new path
   
  for (var i = skipFolders; i < parts; i++) { //Start loop after the skipped parts
    nupath.push((splitPath[i])); //Add the part to the array
  }
  rd.setPath("/" + nupath.join('/')); //Combined the new path into a parent path with a leading slash
}