Illustratorのスクリプト生成
- 渡邉 定好
- 4月3日
- 読了時間: 5分
Claude3.7を使ってスクリプトの生成を試みた。
プロンプト
Illustratorのスクリプトを製作したい。
画像のファイルパスは固定で大丈夫です。
画像ファイルは、epsファイルです。
印刷時の設定は毎回同じです。
変形効果で面付けした画像を01~10まで差し替えて、
その都度プリンタへ送りたい。
最初01.epsが配置されている状態。
01.epsを画像ファイルのあるフォルダから02.epsに変更して 印刷する。
次に03.epsに変更して印刷する。
それをファイルがなくなるまで繰り返す。


// Illustratorの画像置換印刷スクリプト
// 指定されたフォルダ内の.epsファイルを順番に配置して印刷します
// 設定
var folderPath = "/path/to/your/eps/files/"; // EPSファイルがあるフォルダパスを指定
var startNumber = 1;
var endNumber = 10;
// メインドキュメントの取得(現在開いているドキュメント)
var doc = app.activeDocument;
// 現在選択されている配置された画像を取得
if (app.selection.length == 0) {
alert("画像が選択されていません。01.epsが配置された状態で画像を選択してください。");
exit();
}
// 選択されたアイテムをチェック
var selectedItem = app.selection[0];
if (!(selectedItem.typename == "PlacedItem")) {
alert("選択されているのは配置画像ではありません。配置されたEPS画像を選択してください。");
exit();
}
// 印刷設定
var printPreset = app.printPresets[0]; // 必要に応じてプリセット名を指定
// ファイルを順番に置き換えて印刷
for (var i = startNumber + 1; i <= endNumber; i++) {
try {
// ファイル名の作成(例: 02.eps, 03.eps, ...)
var paddedNumber = ("0" + i).slice(-2); // 01, 02, ..., 10 の形式にフォーマット
var newFilePath = folderPath + paddedNumber + ".eps";
var newFile = new File(newFilePath);
// ファイルが存在するか確認
if (!newFile.exists) {
alert(newFilePath + " が見つかりません。処理を終了します。");
break;
}
// 選択した画像を新しいファイルで置き換え
selectedItem.file = newFile;
// ドキュメントを更新
doc.imageChanged(selectedItem);
// 印刷
app.executeMenuCommand("print");
// または特定の印刷設定を使用する場合:
// doc.print(printPreset);
// 少し待機(必要に応じて)
$.sleep(1000);
} catch (e) {
alert("エラーが発生しました: " + e);
break;
}
}
alert("処理が完了しました。");
プロンプト
01.epsが複数存在する場合には、同様に配置する。
// Illustratorの複数画像置換印刷スクリプト
// ドキュメント内のすべての01.epsを検出し、順番に02.eps, 03.eps...に置き換えて印刷します
// 設定
var folderPath = "/path/to/your/eps/files/"; // EPSファイルがあるフォルダパスを指定(最後のスラッシュを忘れずに)
var startNumber = 1;
var endNumber = 10;
var baseFileName = "01.eps"; // 最初に配置されている基準ファイル名
// メインアプリケーションとドキュメントの確認
if (app.documents.length == 0) {
alert("ドキュメントが開かれていません。");
exit();
}
// 現在開いているドキュメントを取得
var doc = app.activeDocument;
// ドキュメント内のすべての配置画像を取得
var placedItems = [];
for (var i = 0; i < doc.placedItems.length; i++) {
var item = doc.placedItems[i];
// ファイル名を取得して01.epsかどうか確認
if (item.file && decodeURI(item.file.name) === baseFileName) {
placedItems.push(item);
}
}
if (placedItems.length === 0) {
alert(baseFileName + "が配置されていません。");
exit();
}
alert("ドキュメント内に " + placedItems.length + " 個の " + baseFileName + " が見つかりました。順番に置き換えて印刷します。");
// ファイルを順番に置き換えて印刷
for (var i = startNumber + 1; i <= endNumber; i++) {
try {
// ファイル名の作成(例: 02.eps, 03.eps, ...)
var paddedNumber = ("0" + i).slice(-2); // 01, 02, ..., 10 の形式にフォーマット
var newFilePath = folderPath + paddedNumber + ".eps";
var newFile = new File(newFilePath);
// ファイルが存在するか確認
if (!newFile.exists) {
alert(paddedNumber + ".eps が見つかりません。処理を終了します。");
break;
}
// すべての01.eps画像を現在の番号のファイルに置き換え
for (var j = 0; j < placedItems.length; j++) {
placedItems[j].file = newFile;
}
// ドキュメントを更新
app.redraw();
// 印刷実行
app.activeDocument.print();
// 少し待機(印刷処理の時間を確保)
$.sleep(2000);
} catch (e) {
alert("エラーが発生しました: " + e);
break;
}
}
alert("処理が完了しました。");
こんな感じでエラーを修正して、次に必要な機能をプロンプトで支持する。
Comments