Check required function
As a rule, before executing the main part of a script, I run the PreCheck function to make sure everything is in place: e.g. check a document is opened, was saved, etc.
With numerous styles, swatches to check it becomes quite lengthy and time-consuming to duplicate lines of code and edit names so I wrote this function.
If everything is OK, it continues to the next function; if not, it makes a list of missing items and gives a warning in a single window.

Warning: the function doesn’t handle grouping of styles. For example, if you have, say, two styles with exactly the same name but in different groups – one of them existing and another missing – the script won’t give you a warning about the missing one.
var scriptName = "Add bars from Excel - 1.1";
PreCheck();
function PreCheck() {
var parStList = ["Question", "Average grade holder", "Bar graph", "Section and grading", "Legend", "Domain", "Average improvement", "Overall improvement", "Overall average grade", "Section title", "Average grade"];
var charStList = ["Bar evaluation", "Your Response", "Overall improvement", "Legend improvement", "Legend before", "White", "Improvement", "Before", "After value", "Average improvement" ];
var swatchList = ["Improvement", "Before", "Quality", "Bar", "Overall avarage grade bar"];
var objStList = ["Object Style Question", "Object Style Before", "Object Style Quality", "Object Style Bar", "Object Style Overall avarage grade bar"];
var report = "";
var listMissingParStyles = CheckRequired(parStList, "allParagraphStyles");
if (listMissingParStyles.length > 0) {
report += "The following " + ((listMissingParStyles.length == 1) ? "" : listMissingParStyles.length + " ") + "paragraph style" + ((listMissingParStyles.length == 1) ? " is" : "s are") + " missing:\r" + listMissingParStyles.join(", ") + "\r\r";
}
var listMissingCharStyles = CheckRequired(charStList, "allCharacterStyles");
if (listMissingCharStyles.length > 0) {
report += "The following " + ((listMissingCharStyles.length == 1) ? "" : listMissingCharStyles.length + " ") + "character style" + ((listMissingCharStyles.length == 1) ? " is" : "s are") + " missing:\r" + listMissingCharStyles.join(", ") + "\r\r";
}
var listMissingObjStyles = CheckRequired(objStList, "allObjectStyles");
if (listMissingObjStyles.length > 0) {
report += "The following " + ((listMissingObjStyles.length == 1) ? "" : listMissingObjStyles.length + " ") + "object style" + ((listMissingObjStyles.length == 1) ? " is" : "s are") + " missing:\r" + listMissingObjStyles.join(", ") + "\r\r";
}
var listMissingSwatches = CheckRequired(swatchList, "swatches");
if (listMissingSwatches.length > 0) {
report += "The following " + ((listMissingSwatches.length == 1) ? "" : listMissingSwatches.length + " ") + "swatch" + ((listMissingSwatches.length == 1) ? " is" : "es are") + " missing:\r" + listMissingSwatches.join(", ") + "\r\r";
}
if (report != "") {
ErrorExit(report, true);
}
else {
alert ("Everything is Okay!", scriptName);
}
}
function CheckRequired(list, collection) {
var item,
arr = eval("app.activeDocument." + collection),
names = [],
missing = [];
for (var i = 0; i < list.length; i++) {
item = list[i];
for (var j = 0; j < arr.length; j++) {
names.push(arr[j].name);
}
if (GetArrayIndex(names, item) == -1) {
missing.push(item);
}
}
return missing;
}
function GetArrayIndex(arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == val) {
return i;
}
}
return -1;
}
function ErrorExit(error, icon) {
alert(error, scriptName, icon);
exit();
}
Click here to download the function.
