Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save monokano/1c7123e26e878268b4e14306c56b9789 to your computer and use it in GitHub Desktop.
Save monokano/1c7123e26e878268b4e14306c56b9789 to your computer and use it in GitHub Desktop.
Illustratorドキュメントの同一リンクファイルを一括で再リンクするスクリプト
//Illustratorドキュメントの同一リンクファイルを一括で再リンクする
//処理対象
//ドキュメント内で選択されているリンク
//重要:選択されていなくても、選択箇所と同一ファイルにリンクしていたら処理対象
//注意点
//ドキュメント内のリンク選択はダイレクト選択ツールで選択すること
//編集モードで実行しないように。処理が完了しなくなってしまう
//使い方
//1. ドキュメント内でリンク箇所を選択する(複数可)
//2. このスクリプトを実行
//3. ファイル選択ダイアログが表示されるので再リンクするファイルを選択する
//4. 完了
// アクティブなドキュメントを取得
var doc = app.activeDocument;
// すべてのリンクを取得
var links = doc.placedItems;
// リンクを置き換える関数
function relinkToNewPath(item, newPath) {
if (item.typename === "PlacedItem") {
item.file = new File(newPath);
}
}
// 選択されたアイテムをチェック
if (app.selection.length > 0) {
var selectedItems = app.selection;
var targetFiles = [];
// 選択されたアイテムのリンクを収集
for (var i = 0; i < selectedItems.length; i++) {
if (selectedItems[i].typename === "PlacedItem") {
targetFiles.push(selectedItems[i].file);
}
}
// 選択された中にリンクがない場合はアラートを表示して終了
if (targetFiles.length === 0) {
alert("選択された中にリンクがありません。リンクを選択してください。");
} else {
// 新しいリンク先ファイルのパスを選択するダイアログを表示
var newLinkFile = File.openDialog("新しいリンク先ファイルを選択してください");
// 選択されたファイルが有効か確認
if (newLinkFile) {
var newLinkPath = newLinkFile.fsName; // ファイルパスを取得
// 同一リンクファイルを使用しているリンクも含めて置き換え
for (var j = 0; j < links.length; j++) {
for (var k = 0; k < targetFiles.length; k++) {
if (links[j].file && links[j].file.fullName === targetFiles[k].fullName) {
relinkToNewPath(links[j], newLinkPath);
}
}
}
alert("リンクが新しいファイルに置き換えられました。");
} else {
alert("新しいリンク先ファイルが選択されませんでした。");
}
}
} else {
alert("選択されたアイテムがありません。リンクを選択してください。");
}
@monokano
Copy link
Author

monokano commented Jun 6, 2024

2024.6.6 埋め込み画像を除外するようにしました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment