Question
Script works on Windows but not Mac: Unable to execute script at line 1. ) does not have a value
Hi guys,
I'm working on a script to help standardize naming conventions in After Effects projects at work.
The script works on my PC, but not on my Mac- its throwing me "Unable to execute script at line 1. ) does not have a value" whenever i try to run it.
If any of you scripting wizards have any idea whatsoever of what could be wrong, I'd be forever grateful.
"object"!=typeof JSON&&(JSON={}),function(){"use strict";var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta,rep;function f(t){return t<10?"0"+t:t}function this_value(){return this.valueOf()}function quote(t){return rx_escapable.lastIndex=0,rx_escapable.test(t)?'"'+t.replace(rx_escapable,(function(t){var e=meta[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+t+'"'}function str(t,e){var r,n,o,u,f,a=gap,i=e[t];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(t)),"function"==typeof rep&&(i=rep.call(e,t,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i😞"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,f=[],"[object Array]"===Object.prototype.toString.apply(i)){for(u=i.length,r=0;r<u;r+=1)f[r]=str(r,i)||"null";return o=0===f.length?"[]":gap?"[\n"+gap+f.join(",\n"+gap)+"\n"+a+"]":"["+f.join(",")+"]",gap=a,o}if(rep&&"object"==typeof rep)for(u=rep.length,r=0;r<u;r+=1)"string"==typeof rep[r]&&(o=str(n=rep[r],i))&&f.push(quote(n)+(gap?": ":":")+o);else for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(o=str(n,i))&&f.push(quote(n)+(gap?": ":":")+o);return o=0===f.length?"{}":gap?"{\n"+gap+f.join(",\n"+gap)+"\n"+a+"}":"{"+f.join(",")+"}",gap=a,o}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=this_value,Number.prototype.toJSON=this_value,String.prototype.toJSON=this_value),"function"!=typeof JSON.stringify&&(meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(t,e,r){var n;if(gap="",indent="","number"==typeof r)for(n=0;n<r;n+=1)indent+=" ";else"string"==typeof r&&(indent=r);if(rep=e,e&&"function"!=typeof e&&("object"!=typeof e||"number"!=typeof e.length))throw new Error("JSON.stringify");return str("",{"":t})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){var j;function walk(t,e){var r,n,o=t[e];if(o&&"object"==typeof o)for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(void 0!==(n=walk(o,r))?o[r]=n:delete o[r]);return reviver.call(t,e,o)}if(text=String(text),rx_dangerous.lastIndex=0,rx_dangerous.test(text)&&(text=text.replace(rx_dangerous,(function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)}))),rx_one.test(text.replace(rx_two,"@").replace(rx_three,"]").replace(rx_four,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""😞j;throw new SyntaxError("JSON.parse")})}();
var panelGlobal = this;
var scriptUIPanel = (panelGlobal instanceof Panel) ? panelGlobal : new Window("palette");
if (!(panelGlobal instanceof Panel)) scriptUIPanel.text = "PerfectCompNamer";
var prefixInput, clientInput, projectInput, placementInput, dimensionsWidth, dimensionsHeight, lengthInput, languageInput, suffixInput;
var prefixCheckbox, clientCheckbox, projectCheckbox, placementCheckbox, dimensionsCheckbox, lengthCheckbox, languageCheckbox, suffixCheckbox;
// Function to save the inputs to a JSON file
function saveInputsToFile(inputs) {
var file = new File(Folder.userData.fullName + "/CompositionNamingInputs.json");
file.open("w");
file.write(JSON.stringify(inputs));
file.close();
}
// Function to load the inputs from a JSON file
function loadInputsFromFile() {
var file = new File(Folder.userData.fullName + "/CompositionNamingInputs.json");
if (file.exists) {
file.open("r");
var content = file.read();
file.close();
return JSON.parse(content);
}
return {
prefix: "",
prefixCheckbox: false,
client: "",
clientCheckbox: false,
project: "",
projectCheckbox: false,
placement: "",
placementCheckbox: false,
dimensionsWidth: "",
dimensionsHeight: "",
dimensionsCheckbox: false,
length: "",
lengthCheckbox: false,
language: "",
languageCheckbox: false,
suffix: "",
suffixCheckbox: false,
};
}
// Load the last used inputs
var lastInputs = loadInputsFromFile();
function enableDisableEdittext(checkbox, edittext) {
edittext.enabled = checkbox.value;
}
// SCRIPTUIPANEL
// =============
scriptUIPanel.orientation = "column";
scriptUIPanel.alignChildren = ["center","top"];
scriptUIPanel.spacing = 10;
scriptUIPanel.margins = 16;
// NAMINGPROPERTIES
// ================
var namingProperties = scriptUIPanel.add("panel", undefined, undefined, {name: "namingProperties"});
namingProperties.text = "Naming Properties";
namingProperties.orientation = "column";
namingProperties.alignChildren = ["left","top"];
namingProperties.spacing = 10;
namingProperties.margins = 10;
// PREFIXGROUP
// ===========
var prefixGroup = namingProperties.add("group", undefined, {name: "prefixGroup"});
prefixGroup.orientation = "row";
prefixGroup.alignChildren = ["left","center"];
prefixGroup.spacing = 10;
prefixGroup.margins = 0;
var prefixCheckbox = prefixGroup.add("checkbox", undefined, undefined, {name: "prefixCheckbox"});
prefixCheckbox.value = lastInputs.prefixCheckbox;
// prefixWrapper
// ======
var prefixWrapper = prefixGroup.add("group", undefined, {name: "prefixWrapper"});
prefixWrapper.preferredSize.width = 80;
prefixWrapper.orientation = "row";
prefixWrapper.alignChildren = ["left","center"];
prefixWrapper.spacing = 10;
prefixWrapper.margins = 0;
var prefixPropertyText = prefixWrapper.add("statictext", undefined, undefined, {name: "prefixWrapper"});
prefixPropertyText.text = "Prefix:";
// PREFIXGROUP
// ===========
var prefixInput = prefixGroup.add('edittext {properties: {name: "prefixInput"}}');
prefixInput.text = lastInputs.prefix;
prefixInput.preferredSize.width = 120;
enableDisableEdittext(prefixCheckbox, prefixInput);
// CLIENTGROUP
// ===========
var clientGroup = namingProperties.add("group", undefined, {name: "clientGroup"});
clientGroup.orientation = "row";
clientGroup.alignChildren = ["left","center"];
clientGroup.spacing = 10;
clientGroup.margins = 0;
var clientCheckbox = clientGroup.add("checkbox", undefined, undefined, {name: "clientCheckbox"});
clientCheckbox.value = lastInputs.clientCheckbox;
// CLIENTWRAPPER
// =============
var clientWrapper = clientGroup.add("group", undefined, {name: "clientWrapper"});
clientWrapper.preferredSize.width = 80;
clientWrapper.orientation = "row";
clientWrapper.alignChildren = ["left","center"];
clientWrapper.spacing = 10;
clientWrapper.margins = 0;
var clientPropertyText = clientWrapper.add("statictext", undefined, undefined, {name: "clientPropertyText"});
clientPropertyText.text = "Client:";
// CLIENTGROUP
// ===========
var clientInput = clientGroup.add('edittext {properties: {name: "clientInput"}}');
clientInput.text = lastInputs.client;
clientInput.preferredSize.width = 120;
enableDisableEdittext(clientCheckbox, clientInput);
// PROJECTGROUP
// ============
var projectGroup = namingProperties.add("group", undefined, {name: "projectGroup"});
projectGroup.orientation = "row";
projectGroup.alignChildren = ["left","center"];
projectGroup.spacing = 10;
projectGroup.margins = 0;
var projectCheckbox = projectGroup.add("checkbox", undefined, undefined, {name: "projectCheckbox"});
projectCheckbox.value = lastInputs.projectCheckbox;
// PROJECTWRAPPER
// ==============
var projectWrapper = projectGroup.add("group", undefined, {name: "projectWrapper"});
projectWrapper.preferredSize.width = 80;
projectWrapper.orientation = "row";
projectWrapper.alignChildren = ["left","center"];
projectWrapper.spacing = 10;
projectWrapper.margins = 0;
var projectPropertyText = projectWrapper.add("statictext", undefined, undefined, {name: "projectPropertyText"});
projectPropertyText.text = "Project:";
// PROJECTGROUP
// ============
var projectInput = projectGroup.add('edittext {properties: {name: "projectInput"}}');
projectInput.text = lastInputs.project;
projectInput.preferredSize.width = 120;
enableDisableEdittext(projectCheckbox, projectInput);
// PLACEMENTGROUP
// ==============
var placementGroup = namingProperties.add("group", undefined, {name: "placementGroup"});
placementGroup.orientation = "row";
placementGroup.alignChildren = ["left","center"];
placementGroup.spacing = 10;
placementGroup.margins = 0;
var placementCheckbox = placementGroup.add("checkbox", undefined, undefined, {name: "placementCheckbox"});
placementCheckbox.value = lastInputs.placementCheckbox;
// PLACEMENTWRAPPER
// ================
var placementWrapper = placementGroup.add("group", undefined, {name: "placementWrapper"});
placementWrapper.preferredSize.width = 80;
placementWrapper.orientation = "row";
placementWrapper.alignChildren = ["left","center"];
placementWrapper.spacing = 10;
placementWrapper.margins = 0;
var placementPropertyText = placementWrapper.add("statictext", undefined, undefined, {name: "placementPropertyText"});
placementPropertyText.text = "Placement:";
// PLACEMENTGROUP
// ==============
var placementInput = placementGroup.add('edittext {properties: {name: "placementInput"}}');
placementInput.text = lastInputs.placement;
placementInput.preferredSize.width = 120;
enableDisableEdittext(placementCheckbox, placementInput);
// DIMENSIONSGROUP
// ================
var dimensionsGroup = namingProperties.add("group", undefined, {name: "dimensionsGroup"});
dimensionsGroup.orientation = "row";
dimensionsGroup.alignChildren = ["left","center"];
dimensionsGroup.spacing = 10;
dimensionsGroup.margins = 0;
var dimensionsCheckbox = dimensionsGroup.add("checkbox", undefined, undefined, {name: "dimensionsCheckbox"});
dimensionsCheckbox.value = lastInputs.dimensionsCheckbox
// dimensionsWRAPPER
// ==================
var dimensionsWrapper = dimensionsGroup.add("group", undefined, {name: "dimensionsWrapper"});
dimensionsWrapper.preferredSize.width = 80;
dimensionsWrapper.orientation = "row";
dimensionsWrapper.alignChildren = ["left","center"];
dimensionsWrapper.spacing = 10;
dimensionsWrapper.margins = 0;
var dimensionsPropertyText = dimensionsWrapper.add("statictext", undefined, undefined, {name: "dimensionsPropertyText"});
dimensionsPropertyText.text = "Dimensions:";
// dimensionsGROUP
// ================
var dimensionsWidthInput = dimensionsGroup.add('edittext {properties: {name: "dimensionsWidthInput"}}');
dimensionsWidthInput.text = lastInputs.dimensionsWidth;
dimensionsWidthInput.preferredSize.width = 45;
enableDisableEdittext(dimensionsCheckbox, dimensionsWidthInput);
var dimensionsDivider = dimensionsGroup.add("statictext", undefined, undefined, {name: "dimensionsDivider"});
dimensionsDivider.text = "x";
var dimensionsHeightInput = dimensionsGroup.add('edittext {properties: {name: "dimensionsHeightInput"}}');
dimensionsHeightInput.text = lastInputs.dimensionsHeight;
dimensionsHeightInput.preferredSize.width = 45;
enableDisableEdittext(dimensionsCheckbox, dimensionsHeightInput);
// LENGTHGROUP
// ===========
var lengthGroup = namingProperties.add("group", undefined, {name: "lengthGroup"});
lengthGroup.orientation = "row";
lengthGroup.alignChildren = ["left","center"];
lengthGroup.spacing = 10;
lengthGroup.margins = 0;
var lengthCheckbox = lengthGroup.add("checkbox", undefined, undefined, {name: "lengthCheckbox"});
lengthCheckbox.value = lastInputs.lengthCheckbox;
// LENGTHWRAPPER
// =============
var lengthWrapper = lengthGroup.add("group", undefined, {name: "lengthWrapper"});
lengthWrapper.preferredSize.width = 80;
lengthWrapper.orientation = "row";
lengthWrapper.alignChildren = ["left","center"];
lengthWrapper.spacing = 10;
lengthWrapper.margins = 0;
var lengthPropertyText = lengthWrapper.add("statictext", undefined, undefined, {name: "lengthPropertyText"});
lengthPropertyText.text = "Length:";
// LENGTHGROUP
// ===========
var lengthInput = lengthGroup.add('edittext {properties: {name: "lengthInput"}}');
lengthInput.text = lastInputs.length;
lengthInput.preferredSize.width = 120;
enableDisableEdittext(lengthCheckbox, lengthInput);
// LANGUAGEGROUP
// =============
var languageGroup = namingProperties.add("group", undefined, {name: "languageGroup"});
languageGroup.orientation = "row";
languageGroup.alignChildren = ["left","center"];
languageGroup.spacing = 10;
languageGroup.margins = 0;
var languageCheckbox = languageGroup.add("checkbox", undefined, undefined, {name: "languageCheckbox"});
languageCheckbox.value = lastInputs.languageCheckbox;
// LANGUAGEWRAPPER
// ===============
var languageWrapper = languageGroup.add("group", undefined, {name: "languageWrapper"});
languageWrapper.preferredSize.width = 80;
languageWrapper.orientation = "row";
languageWrapper.alignChildren = ["left","center"];
languageWrapper.spacing = 10;
languageWrapper.margins = 0;
var languagePropertyText = languageWrapper.add("statictext", undefined, undefined, {name: "languagePropertyText"});
languagePropertyText.text = "Language:";
// LANGUAGEGROUP
// =============
var languageInput = languageGroup.add('edittext {properties: {name: "languageInput"}}');
languageInput.text = lastInputs.language;
languageInput.preferredSize.width = 120;
enableDisableEdittext(languageCheckbox, languageInput);
// SUFFIXGROUP
// ===========
var suffixGroup = namingProperties.add("group", undefined, {name: "suffixGroup"});
suffixGroup.orientation = "row";
suffixGroup.alignChildren = ["left","center"];
suffixGroup.spacing = 10;
suffixGroup.margins = 0;
var suffixCheckbox = suffixGroup.add("checkbox", undefined, undefined, {name: "suffixCheckbox"});
suffixCheckbox.value = lastInputs.suffixCheckbox
// SUFFIXWRAPPER
// =============
var suffixWrapper = suffixGroup.add("group", undefined, {name: "suffixWrapper"});
suffixWrapper.preferredSize.width = 80;
suffixWrapper.orientation = "row";
suffixWrapper.alignChildren = ["left","center"];
suffixWrapper.spacing = 10;
suffixWrapper.margins = 0;
var suffixPropertyText = suffixWrapper.add("statictext", undefined, undefined, {name: "suffixPropertyText"});
suffixPropertyText.text = "Suffix:";
// SUFFIXGROUP
// ===========
var suffixInput = suffixGroup.add('edittext {properties: {name: "suffixInput"}}');
suffixInput.text = lastInputs.suffix;
suffixInput.preferredSize.width = 120;
enableDisableEdittext(suffixCheckbox, suffixInput);
// PREVIEWPANEL
// ============
var previewPanel = scriptUIPanel.add("panel", undefined, undefined, {name: "previewPanel"});
previewPanel.text = "Preview";
previewPanel.preferredSize.width = 260;
previewPanel.orientation = "column";
previewPanel.alignChildren = ["left","top"];
previewPanel.spacing = 10;
previewPanel.margins = 10;
var previewText = previewPanel.add("statictext", undefined, undefined, {
name: "previewText",
});
previewText.text = "StaticText";
previewText.preferredSize.width = 240;
previewText.alignment = ["center", "top"];
// buttonWrapper
// ======
var buttonWrapper = scriptUIPanel.add("group", undefined, {name: "buttonWrapper"});
buttonWrapper.orientation = "row";
buttonWrapper.alignChildren = ["left","center"];
buttonWrapper.spacing = 10;
buttonWrapper.margins = 0;
var applyButton = buttonWrapper.add("button", undefined, undefined, {name: "applyButton"});
applyButton.text = "Apply Naming";
var cancelButton = buttonWrapper.add("button", undefined, undefined, {name: "cancelButton"});
cancelButton.text = "Cancel";
function updatePreviewText() {
var parts = [];
if (prefixCheckbox.value && prefixInput.text !== '') parts.push(prefixInput.text);
// Check if both clientCheckbox and projectCheckbox are checked
if (clientCheckbox.value && projectCheckbox.value) {
if (clientInput.text !== '' && projectInput.text !== '') {
parts.push(clientInput.text + '-' + projectInput.text);
} else {
if (clientInput.text !== '') parts.push(clientInput.text);
if (projectInput.text !== '') parts.push(projectInput.text);
}
} else {
if (clientCheckbox.value && clientInput.text !== '') parts.push(clientInput.text);
if (projectCheckbox.value && projectInput.text !== '') parts.push(projectInput.text);
}
if (placementCheckbox.value && placementInput.text !== '') parts.push(placementInput.text);
if (dimensionsCheckbox.value && dimensionsWidthInput.text !== '' && dimensionsHeightInput.text !== '') parts.push(dimensionsWidthInput.text + 'x' + dimensionsHeightInput.text);
if (lengthCheckbox.value && lengthInput.text !== '') parts.push(lengthInput.text + 's');
// Add the language part with a '-' delimiter if preceded by other inputs
if (languageCheckbox.value && languageInput.text !== '') {
if (parts.length > 0) {
parts.push('-' + languageInput.text);
} else {
parts.push(languageInput.text);
}
}
if (suffixCheckbox.value && suffixInput.text !== '') parts.push(suffixInput.text);
previewText.text = parts.join('_').replace(/_-/, '-');
}
// Event listener for text input changes to update the preview
prefixInput.onChanging = clientInput.onChanging = projectInput.onChanging = placementInput.onChanging =
dimensionsWidthInput.onChanging = dimensionsHeightInput.onChanging = lengthInput.onChanging = languageInput.onChanging = suffixInput.onChanging = updatePreviewText;
// Event listener for checkbox changes to update the preview
prefixCheckbox.onClick = clientCheckbox.onClick = projectCheckbox.onClick = placementCheckbox.onClick =
dimensionsCheckbox.onClick = lengthCheckbox.onClick = languageCheckbox.onClick = suffixCheckbox.onClick = updatePreviewText;
// Event listener for checkbox changes to enable/disable edittext fields
prefixCheckbox.onClick = function() {
enableDisableEdittext(prefixCheckbox, prefixInput);
updatePreviewText();
};
clientCheckbox.onClick = function() {
enableDisableEdittext(clientCheckbox, clientInput);
updatePreviewText();
};
projectCheckbox.onClick = function() {
enableDisableEdittext(projectCheckbox, projectInput);
updatePreviewText();
};
placementCheckbox.onClick = function() {
enableDisableEdittext(placementCheckbox, placementInput);
updatePreviewText();
};
dimensionsCheckbox.onClick = function() {
enableDisableEdittext(dimensionsCheckbox, dimensionsWidthInput);
enableDisableEdittext(dimensionsCheckbox, dimensionsHeightInput);
updatePreviewText();
};
lengthCheckbox.onClick = function() {
enableDisableEdittext(lengthCheckbox, lengthInput);
updatePreviewText();
};
languageCheckbox.onClick = function() {
enableDisableEdittext(languageCheckbox, languageInput);
updatePreviewText();
};
suffixCheckbox.onClick = function() {
enableDisableEdittext(suffixCheckbox, suffixInput);
updatePreviewText();
};
// Apply button click event
applyButton.onClick = function() {
var comp = app.project.activeItem;
if (comp instanceof CompItem) {
comp.name = previewText.text;
alert('Composition name changed to: ' + comp.name);
} else {
alert('Please select a composition to rename.');
}
// Save the inputs for next time, including checkbox states
var inputsToSave = {
prefix: prefixInput.text,
prefixCheckbox: prefixCheckbox.value,
client: clientInput.text,
clientCheckbox: clientCheckbox.value,
project: projectInput.text,
projectCheckbox: projectCheckbox.value,
placement: placementInput.text,
placementCheckbox: placementCheckbox.value,
dimensionsWidth: dimensionsWidthInput.text,
dimensionsHeight: dimensionsHeightInput.text,
dimensionsCheckbox: dimensionsCheckbox.value,
length: lengthInput.text,
lengthCheckbox: lengthCheckbox.value,
language: languageInput.text,
languageCheckbox: languageCheckbox.value,
suffix: suffixInput.text,
suffixCheckbox: suffixCheckbox.value,
};
saveInputsToFile(inputsToSave);
};
// Cancel button click event
cancelButton.onClick = function() {
scriptUIPanel.close();
};
// Update the preview text initially
updatePreviewText();
scriptUIPanel.show();
