デザイン効率化戦略:一つ一つ連番を入力する作業を効率化
- 連番を手動で入力すると時間がかかる
- 数字を飛ばしたり、重複させるようなミスが発生する
- 内容変更があると、修正に手間がかかる
一般的にIllustratorで、数字の連番を入力する際は「手動で一つ一つ」入力する必要があるため、手間がかかるうえ、数字を飛ばしてしまうミスが発生しやすいです。
そこで、この記事では「選択したテキストの数だけ自動で連番入力」してくれるIllustratorスクリプト【text_number】をご紹介します。
このスクリプトを使えば今まで、連番の数字を一つ一つ入力していた作業を自動化することができるので、入力ミスを防ぎ作業効率を高めることができます。
「連番入力の手間を改善したい」と思っているデザイナーの方は、ぜひ使ってみてください。
それではどうぞ!
Profile
この記事を書いている私は、DTPデザイナーとしてIllustratorの操作経験が15年以上あり、スクリプトも自ら作成し、デザイン作業の効率化を図っています。
本ブログでもスクリプトに関する記事を定期的に公開していますので、ぜひご参考にしてください。
関連記事:「完全無料」で作業の効率化!Illustratorスクリプト特集!
【text_number】スクリプトの概要
まず【text_number】とは、どのようなスクリプトなのかをご説明します。
スクリプトの機能
【text_number】は、私が自作したオリジナルスクリプトで、テキストで連番を入力する際に役立つスクリプトです。例えば、カタログやリストの作成時に役立ちます。
以下で主な機能をご紹介します。
- アラート
- 設定ダイアログの表示・設定
- 連番の適用
- 完了通知
- 注意点
・ドキュメント内で選択されたテキストオブジェクトを対象に連番を適用します。選択がない場合は警告を表示します。
表示されるダイアログから以下の設定で行えます
・連番の開始番号
・連番の表示方法
・連番の接頭辞
・置換順序
・設定に従い、各テキストフレームに連番を付与します。
・処理が成功すると「作業が完了しました!」というメッセージを表示します。
・テキストオブジェクトをカウントする為、エリア内文字で複数行あっても一つとカウントされます。
スクリプトの使い方
【text_number】は、以下の手順で利用できます。
- STEP1.連番を適用したいテキストオブジェクトを選択
- STEP2.【text_numbe】を起動
- STEP3.ダイアログで設定をおこなう
- STEP4.「OK」ボタンで実行
なお、次の記事ではIllustratorスクリプトのメニュー以外からの使い方について詳しく解説しています。
ぜひこちらの記事も参考にしてください。
スクリプトのダウンロード
【text_number】は、こちらからサンプルとしてダウンロードできます。 使用前に、必ず「注意事項と免責事項」をご確認ください。安全に利用していただくための重要な情報が記載されています。
ダウンロード:text_number.jsx
ダウンロードができない方は、次の章でソースコードを公開しているのでテキストエディタにコピーしてお使いくだい
動作チェック
このスクリプトは、以下の環境で動作確認済みです。
・Illustrator 2024【Mac】
もし、スクリプトが動作しない場合は、下記の記事を参考にしてください
関連記事:Illustratorスクリプトが動かない時の簡単解決法5選
【text_number】スクリプトのソースコード
ここでは、【text_number】の動作フローと各処理条件が一目でわかるソースコードを紹介します。
理解しやすいよう、説明用のコメントアウトも含まれていますので、参考にしながらコードの動きを確認してください。
ソースコード
function main() {
try {
var doc = app.activeDocument; //現在アクティブなドキュメントを取得します。
if (doc.selection.length === 0) {
alert("テキストが選択されていません");
return;
}
var dlg = new Window('dialog', '設定');
dlg.orientation = 'column';
dlg.alignChildren = 'left';
var helpBtn = dlg.add('button', undefined, 'ヘルプ');
helpBtn.onClick = function() {
alert("このダイアログでは、連番の設定を行います。各オプションの説明はツールチップに表示されます。");
};
dlg.add('statictext', undefined, '連番の開始番号を入力してください:');//.helpTip = "連番の開始番号を入力します。";
var startNumberInput = dlg.add('edittext', undefined, '1');
startNumberInput.characters = 5;
startNumberInput.helpTip = "連番の開始番号を入力します。";
dlg.add('statictext', undefined, '数字の前に「0」を追加する場合は選択してください:');//.helpTip = "連番の桁数を選択します。";
var digitDropdown = dlg.add('dropdownlist', undefined, ['なし', '0', '00', '000']);
digitDropdown.selection = 0;
digitDropdown.helpTip = "01などにする場合は選択してください";
dlg.add('statictext', undefined, '連番の前に追加するテキストを入力してください:');//.helpTip = "連番の前に追加するテキストを入力します。";
var prefixInput = dlg.add('edittext', undefined, '');
prefixInput.characters = 20;
prefixInput.helpTip = "追加しない場合は空白にします。";
dlg.add('statictext', undefined, 'テキストを置換する順番を指定してください:').helpTip = "テキストを置換する順番を選択します。";
var directionDropdown = dlg.add('dropdownlist', undefined, ['左から右', '右から左', '左上から右下', '右上から左下']);
directionDropdown.selection = 0;
directionDropdown.helpTip = "テキストを置換する順番を選択します。";
var buttonGroup = dlg.add('group');
buttonGroup.add('button', undefined, 'OK', {name: 'ok'});
buttonGroup.add('button', undefined, 'キャンセル', {name: 'cancel'}).onClick = function() {
dlg.close();
};
if (dlg.show() !== 1) {
return; // キャンセルボタンが押された場合、処理を中断します。
}
var startNumber = parseInt(startNumberInput.text);
if (isNaN(startNumber)) {
throw new Error("開始番号は数値でなければなりません。");
}
var digitOption = digitDropdown.selection.text;
var prefixText = prefixInput.text;
var direction = directionDropdown.selection.text;
var textFrames = [];
for (var i = 0; i < doc.selection.length; i++) {
if (doc.selection[i].typename === "TextFrame") {
textFrames.push(doc.selection[i]);
}
}
textFrames.sort(function(a, b) {
switch (direction) {
case "左から右":
return b.top - a.top || a.left - b.left;
case "右から左":
return b.top - a.top || b.left - a.left;
case "左上から右下":
return a.left - b.left || b.top - a.top;
case "右上から左下":
return b.left - a.left || b.top - a.top;
default:
return 0;
}
});
for (var i = 0; i < textFrames.length; i++) {
var number = startNumber + i;
var text;
switch (digitOption) {
case "なし":
text = number.toString();
break;
case "0":
text = ("0" + number).slice(-2);
break;
case "00":
text = ("00" + number).slice(-3);
break;
case "000":
text = ("000" + number).slice(-4);
break;
}
textFrames[i].contents = prefixText + text;
}
alert("作業が完了しました!");
} catch (e) {
alert("エラーが発生しました: " + e.message);
}
}
main();
なお、Illustratorスクリプトの作成については、下記の記事を参考にしてください。
関連記事:【入門編】Illustratorスクリプトの作り方をサンプルを交えて解説
注意事項と免責事項
【text_number】は、商用利用可能です。ただし使用につきましては、下記の注意事項と免責事項を必ずお守りください。
注意事項
- 予期せぬエラーやデータ損失を防ぐために、スクリプト実行前には必ずデータを保存してください。
- 事前にスクリプトの動作確認を行い、環境に適しているか確認してください。
- Illustratorのアップデートによりスクリプトの動作が変わる可能性があります。アップデート後の不具合についてはサポートできませんので、あらかじめご了承ください。
免責事項
- ご利用はすべて自己責任でお願いいたします。
- スクリプトの使用によるトラブルや損失について、当方は一切の責任を負いません。
- 商用利用における成果物の品質や結果に関しては、一切の責任を負いません。
- 本スクリプトの著作権は制作者に帰属します。無断で転送・販売・配布することは禁止いたします。
まとめ:連番入力を自動化する【text_number】スクリプト
今回は、選択したテキストフレームに自動で連番をつけるIllustratorスクリプト【text_number】を紹介しました。
今まで一つ一つ手作業で行っていた連番を自動で行えるので、ぜひ試してみてください。
ダウンロードはこちら:text_number.jsx
というわけで今回は以上です。
『ミスを防ぐ!数字の連番入力を自動化するIllustratorスクリプト』を最後までお読みいただき、ありがとうございました。
Illustratorスクリプトのおすすめ書籍!
Illustratorスクリプトについて学習したい方は、【Illustrator自動化 基本編】がサンプルコードが【330本】掲載されているのでオススメです。
また、今回紹介した書籍以外にもスクリプトに関する書籍を紹介しているので参考にしてください。