top of page

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("処理が完了しました。");

こんな感じでエラーを修正して、次に必要な機能をプロンプトで支持する。


できれば、 01.eps 03.eps 05.eps 06.eps のように番号がとんでいても、フォルダに入っているものすべてを 配置して印刷したい。


// Illustratorのフォルダ内全EPSファイル置換印刷スクリプト
// フォルダ内のすべての.epsファイルを検出し、ドキュメント内の配置画像を順番に置き換えて印刷します

// 設定
var folderPath = "/path/to/your/eps/files/"; // EPSファイルがあるフォルダパスを指定(最後のスラッシュを忘れずに)
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];
// ファイル名を取得して配置済みのbaseFileNameと一致するか確認
if (item.file && decodeURI(item.file.name) === baseFileName) {
placedItems.push(item);
}
}

if (placedItems.length === 0) {
alert(baseFileName + "が配置されていません。");
exit();
}

// 指定フォルダからすべての.epsファイルを取得
var folder = new Folder(folderPath);
var epsFiles = folder.getFiles("*.eps");

// ファイル名でソート
epsFiles.sort();

if (epsFiles.length === 0) {
alert("フォルダ内にEPSファイルが見つかりません。");
exit();
}

alert("ドキュメント内に " + placedItems.length + " 個の " + baseFileName + " が見つかりました。\n" +
"フォルダ内に " + epsFiles.length + " 個のEPSファイルが見つかりました。\n" +
"順番に置き換えて印刷します。");

// 最初のファイル(通常は01.eps)はスキップして処理を開始
var startIndex = 0;
for (var i = 0; i < epsFiles.length; i++) {
if (decodeURI(epsFiles[i].name) === baseFileName) {
startIndex = i + 1;
break;
}
}

// 残りのファイルを順番に処理
for (var i = startIndex; i < epsFiles.length; i++) {
try {
var currentFile = epsFiles[i];
// ファイル名を表示
alert("処理中: " + decodeURI(currentFile.name) + " (" + (i + 1 - startIndex) + "/" + (epsFiles.length - startIndex) + ")");
// すべての配置画像を現在のファイルに置き換え
for (var j = 0; j < placedItems.length; j++) {
placedItems[j].file = currentFile;
}
// ドキュメントを更新
app.redraw();
// 印刷実行
app.activeDocument.print();
// 少し待機(印刷処理の時間を確保)
$.sleep(2000);
} catch (e) {
alert("エラーが発生しました: " + e + "\nファイル: " + decodeURI(currentFile.name));
// エラーが発生しても処理を続行
continue;
}
}

alert("処理が完了しました。" + (epsFiles.length - startIndex) + "個のファイルを処理しました。");

Comments


名刺印刷はプロ御用達のクリックにお任せください

株式会社クリック

〒395-0085 長野県飯田市吾妻町20

電話番号 :0265-53-8327

FAX番号 :0265-53-8328

©2022 株式会社クリック. All Rights Reserved.

bottom of page