This script allows you to rename all artboard names at once in Adobe Illustrator. With this script, you can replace, add, or modify the numbering and text of your artboard names. It also supports regular expressions for advanced renaming options.
- Run this script from File > Scripts > Other Script…
- Edit the artboard name displayed in the text field.
- Use the options available for quickly editing artboard names:
- Replace the number at the beginning or end of the artboard name.
- Add a number to the beginning or end of the artboard name.
- Increase or decrease the number at the beginning or end of the artboard name.
- Check the Descending Order checkbox to change to descending order.
- Add text to the beginning or end of the artboard name.
- Replace the artboard name with the specified string using regular expressions.
JavaScript
(function() {
if (app.documents.length && isValidVersion()) main();
})();
function main() {
var artboardNames = getArtboardNames();
var history = [artboardNames];
var count = 0;
var dialog = showDialog(artboardNames);
dialog.number.add.onClick = function() {
var texts = dialog.names.text.split('\n');
history.push(texts);
count++;
var config = getConfiguration(dialog);
var names = addNumber(texts, config);
dialog.names.text = names.join('\n');
}
dialog.number.replace.onClick = function() {
var texts = dialog.names.text.split('\n');
history.push(texts);
count++;
var config = getConfiguration(dialog);
var names = replaceNumber(texts, config);
dialog.names.text = names.join('\n');
}
dialog.number.decrease.onClick = function() {
var texts = dialog.names.text.split('\n');
history.push(texts);
count++;
var config = getConfiguration(dialog);
var value = -1;
var names = increaseNumber(value, texts, config);
dialog.names.text = names.join('\n');
}
dialog.number.increase.onClick = function() {
var texts = dialog.names.text.split('\n');
history.push(texts);
count++;
var config = getConfiguration(dialog);
var value = 1;
var names = increaseNumber(value, texts, config);
dialog.names.text = names.join('\n');
}
dialog.contents.add.onClick = function() {
var texts = dialog.names.text.split('\n');
history.push(texts);
count++;
var config = getConfiguration(dialog);
var names = addText(texts, config);
dialog.names.text = names.join('\n');
}
dialog.search.apply.onClick = function() {
var texts = dialog.names.text.split('\n');
history.push(texts);
count++;
var config = getConfiguration(dialog);
var names = replaceText(texts, config);
dialog.names.text = names.join('\n');
}
dialog.reset.onClick = function() {
history = [];
history.push(artboardNames);
count = 0;
dialog.names.text = artboardNames.join('\n');
}
dialog.undo.onClick = function() {
dialog.names.text = history[count].join('\n');
count--;
if (count < 0) count = 0;
if (1 < history.length) history.pop();
}
dialog.ok.onClick = function() {
var texts = dialog.names.text.split('\n');
var done = renameArtboard(texts);
if (done) dialog.close();
}
dialog.show();
}
function getConfiguration(dialog) {
var number = {
start: getValue(dialog.number.start.text),
isDescendingOrder: dialog.number.isDescendingOrder.value,
isPrefix: dialog.number.isPrefix.value,
isSuffix: dialog.number.isSuffix.value
};
var contents = {
text: dialog.contents.text.text,
isPrefix: dialog.contents.isPrefix.value,
isSuffix: dialog.contents.isSuffix.value
};
var search = {
find: dialog.search.find.text,
replace: dialog.search.replace.text
};
return {
number: number,
contents: contents,
search: search
};
}
function renameArtboard(items) {
items = deleteEmptyName(items);
var artboards = app.activeDocument.artboards;
var count = countTextLines(items, artboards);
if (!count) return false;
for (var i = 0; i < items.length; i++) {
var name = items[i];
var artboard = artboards[i];
artboard.name = name;
}
return true;
}
function deleteEmptyName(items) {
for (var i = items.length - 1; 0 <= i; i--) {
var name = items[i];
var regex = /\s+/g;
name = name.replace(regex, '');
if (!name) items.splice(i, 1);
}
return items;
}
function countTextLines(items, artboards) {
if (items.length == artboards.length) return true;
$.localize = true;
var ui = localizeUI();
return alert(ui.message);
}
function addNumber(artboards, config) {
var names = [];
var start = config.number.start;
var isDescendingOrder = config.number.isDescendingOrder;
var isPrefix = config.number.isPrefix;
for (var i = 0; i < artboards.length; i++) {
var artboard = artboards[i];
var name = isPrefix ? (start + ' ' + artboard) : (artboard + ' ' + start);
names.push(name);
isDescendingOrder ? start-- : start++;
}
return names;
}
function increaseNumber(value, artboards, config) {
var names = [];
var isPrefix = config.number.isPrefix;
var regex = isPrefix ? /^\d+/ : /\d+$/;
for (var i = 0; i < artboards.length; i++) {
var artboard = artboards[i];
if (regex.test(artboard)) {
var num = Number(artboard.match(regex)[0]);
num += value;
if (num < 0) num = 0;
artboard = artboard.replace(regex, num);
}
names.push(artboard);
}
return names;
}
function replaceNumber(artboards, config) {
var names = [];
var start = config.number.start;
var isDescendingOrder = config.number.isDescendingOrder;
var isPrefix = config.number.isPrefix;
var regex = isPrefix ? /^\d+/ : /\d+$/;
for (var i = 0; i < artboards.length; i++) {
var artboard = artboards[i];
if (regex.test(artboard)) {
artboard = artboard.replace(regex, start);
isDescendingOrder ? start-- : start++;
}
names.push(artboard);
}
return names;
}
function addText(artboards, config) {
var names = [];
var text = config.contents.text;
var isPrefix = config.contents.isPrefix;
for (var i = 0; i < artboards.length; i++) {
var artboard = artboards[i];
if (text) {
artboard = isPrefix ? (text + ' ' + artboard) : (artboard + ' ' + text);
}
names.push(artboard);
}
return names;
}
function replaceText(artboards, config) {
var names = [];
var find = config.search.find;
var replace = config.search.replace;
var regex = new RegExp(find, 'ig');
for (var i = 0; i < artboards.length; i++) {
var artboard = artboards[i];
if (regex.test(artboard)) {
artboard = artboard.replace(regex, replace);
}
names.push(artboard);
}
return names;
}
function getArtboardNames() {
var names = [];
var artboards = app.activeDocument.artboards;
for (var i = 0; i < artboards.length; i++) {
var artboard = artboards[i];
names.push(artboard.name);
}
return names;
}
function getValue(text) {
var twoByteChar = /[!-~]/g;
var value = text.replace(twoByteChar, function (str) {
return String.fromCharCode(str.charCodeAt(0) - 0xFEE0);
});
if (isNaN(value) || !value) return 0;
return Number(value);
}
function isValidVersion() {
var cs4 = 14;
var aiVersion = parseInt(app.version);
if (aiVersion < cs4) return false;
return true;
}
function showDialog(artboards) {
$.localize = true;
var ui = localizeUI();
var dialog = new Window('dialog');
dialog.text = ui.title;
dialog.orientation = 'column';
dialog.alignChildren = ['fill', 'top'];
dialog.spacing = 10;
dialog.margins = 16;
var group1 = dialog.add('group', undefined, { name: 'group1' });
group1.orientation = 'column';
group1.alignChildren = ['fill', 'center'];
group1.spacing = 10;
group1.margins = [0, 0, 0, 10];
var edittext1 = group1.add('edittext', undefined, undefined, { name: 'edittext1', multiline: true });
edittext1.text = artboards.join('\n');
edittext1.preferredSize.height = 220;
var statictext1 = group1.add('statictext', undefined, undefined, { name: 'statictext1' });
statictext1.text = artboards.length + ' ' + ui.lines + '/ ' + artboards.length + ' ' + ui.artboards;
var tpanel1 = dialog.add('tabbedpanel', undefined, undefined, { name: 'tpanel1' });
tpanel1.alignChildren = 'fill';
tpanel1.margins = 0;
var tab1 = tpanel1.add('tab', undefined, undefined, { name: 'tab1' });
tab1.text = ui.number;
tab1.orientation = 'column';
tab1.alignChildren = ['fill', 'top'];
tab1.spacing = 10;
tab1.margins = [10, 10, 0, 10];
var group2 = tab1.add('group', undefined, { name: 'group2' });
group2.orientation = 'row';
group2.alignChildren = ['left', 'center'];
group2.spacing = 10;
group2.margins = 0;
var group3 = group2.add('group', undefined, { name: 'group3' });
group3.orientation = 'column';
group3.alignChildren = ['right', 'center'];
group3.spacing = 10;
group3.margins = 0;
var statictext2 = group3.add('statictext', undefined, undefined, { name: 'statictext2' });
statictext2.text = ui.start;
var group4 = group2.add('group', undefined, { name: 'group4' });
group4.orientation = 'column';
group4.alignChildren = ['left', 'center'];
group4.spacing = 10;
group4.margins = 0;
var edittext2 = group4.add('edittext', undefined, undefined, { name: 'edittext2' });
edittext2.text = '1';
edittext2.preferredSize.width = 50;
var group5 = group2.add('group', undefined, { name: 'group5' });
group5.orientation = 'row';
group5.alignChildren = ['left', 'center'];
group5.spacing = 10;
group5.margins = [0, 5, 0, 0];
var checkbox1 = group5.add('checkbox', undefined, undefined, { name: 'checkbox1' });
checkbox1.text = ui.descendingOrder;
var group6 = group2.add('group', undefined, { name: 'group6' });
group6.orientation = 'row';
group6.alignChildren = ['left', 'center'];
group6.spacing = 10;
group6.margins = [0, 5, 0, 0];
var radiobutton1 = group6.add('radiobutton', undefined, undefined, { name: 'radiobutton1' });
radiobutton1.text = ui.prefix;
var radiobutton2 = group6.add('radiobutton', undefined, undefined, { name: 'radiobutton2' });
radiobutton2.text = ui.suffix;
radiobutton2.value = true;
var group7 = group2.add('group', undefined, { name: 'group7' });
group7.orientation = 'row';
group7.alignChildren = ['right', 'center'];
group7.spacing = 10;
group7.margins = 0;
var button1 = group7.add('button', undefined, undefined, { name: 'button1' });
button1.text = ui.replace;
button1.preferredSize.width = 70;
var button2 = group7.add('button', undefined, undefined, { name: 'button2' });
button2.text = ui.add;
button2.preferredSize.width = 70;
var group8 = tab1.add('group', undefined, { name: 'group8' });
group8.orientation = 'row';
group8.alignChildren = ['right', 'center'];
group8.spacing = 10;
group8.margins = 0;
var button3 = group8.add('button', undefined, undefined, { name: 'button3' });
button3.text = '-1';
button3.preferredSize.width = 30;
var button4 = group8.add('button', undefined, undefined, { name: 'button4' });
button4.text = '+1';
button4.preferredSize.width = 30;
var tab2 = tpanel1.add('tab', undefined, undefined, { name: 'tab2' });
tab2.text = ui.text;
tab2.orientation = 'column';
tab2.alignChildren = ['fill', 'top'];
tab2.spacing = 10;
tab2.margins = [10, 10, 0, 10];
var group9 = tab2.add('group', undefined, { name: 'group9' });
group9.orientation = 'row';
group9.alignChildren = ['left', 'center'];
group9.spacing = 10;
group9.margins = 0;
var group10 = group9.add('group', undefined, { name: 'group10' });
group10.orientation = 'column';
group10.alignChildren = ['right', 'center'];
group10.spacing = 10;
group10.margins = 0;
var statictext3 = group10.add('statictext', undefined, undefined, { name: 'statictext3' });
statictext3.text = ui.contents;
var group11 = group9.add('group', undefined, { name: 'group11' });
group11.orientation = 'column';
group11.alignChildren = ['fill', 'center'];
group11.spacing = 10;
group11.margins = 0;
group11.alignment = ['fill', 'center'];
var edittext3 = group11.add('edittext', undefined, undefined, { name: 'edittext3' });
edittext3.text = '';
var group12 = group9.add('group', undefined, { name: 'group12' });
group12.orientation = 'row';
group12.alignChildren = ['right', 'center'];
group12.spacing = 10;
group12.margins = [0, 5, 0, 0];
group12.alignment = ['right', 'center'];
var radiobutton3 = group12.add('radiobutton', undefined, undefined, { name: 'radiobutton3' });
radiobutton3.text = ui.prefix;
radiobutton3.value = true;
var radiobutton4 = group12.add('radiobutton', undefined, undefined, { name: 'radiobutton4' });
radiobutton4.text = ui.suffix;
var group13 = group9.add('group', undefined, { name: 'group13' });
group13.orientation = 'row';
group13.alignChildren = ['right', 'center'];
group13.spacing = 10;
group13.margins = 0;
group13.alignment = ['left', 'center'];
var button5 = group13.add('button', undefined, undefined, { name: 'button5' });
button5.text = ui.add;
button5.preferredSize.width = 70;
var tab3 = tpanel1.add('tab', undefined, undefined, { name: 'tab3' });
tab3.text = ui.replace;
tab3.orientation = 'column';
tab3.alignChildren = ['fill', 'top'];
tab3.spacing = 10;
tab3.margins = [10, 10, 0, 10];
var group14 = tab3.add('group', undefined, { name: 'group14' });
group14.orientation = 'row';
group14.alignChildren = ['left', 'center'];
group14.spacing = 10;
group14.margins = 0;
var group15 = group14.add('group', undefined, { name: 'group15' });
group15.orientation = 'column';
group15.alignChildren = ['right', 'center'];
group15.spacing = 18;
group15.margins = [0, 2, 0, 0];
var statictext4 = group15.add('statictext', undefined, undefined, { name: 'statictext4' });
statictext4.text = ui.find;
var statictext5 = group15.add('statictext', undefined, undefined, { name: 'statictext5' });
statictext5.text = ui.search;
var group16 = group14.add('group', undefined, { name: 'group16' });
group16.orientation = 'column';
group16.alignChildren = ['fill', 'center'];
group16.spacing = 10;
group16.margins = [0, 2, 0, 0];
group16.alignment = ['fill', 'center'];
var edittext4 = group16.add