InDesignでリンクファイル名を表示。
【作成方法】
InDesign > スクリプトパネル > 右クリックでFinder で表示。
適当に拡張子が「.JSX」のファイルを複製。
「リンクファイル名を表示」などにリネームして、
ダブルクリックして開き、
下記のJavaScriptコードを入力して保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
if(app.documents.length > 0) { try{ var saveFolderPath = app.activeDocument.filePath; // アクティブなドキュメントの保存フォルダ }catch( e ){ alert("ドキュメントを保存してから実行してください。"); //alert( e ); } var actDocName = app.activeDocument.name.split('.')[0]; // アクティブなドキュメントの名前 //alert(actDocName) var NORMALresultArr = []; // 結果文字列の格納用配列(タブ区切りテキスト) var MISSINGresultArr = []; var OUTresultArr = []; var graphArr = app.activeDocument.allGraphics; // ページオブジェクトのコレクション // 全画像ループ var gLen = graphArr.length; // 全画像についてパスを取得、格納用配列に格納 for(var g = 0 ; g < gLen ; g++) { myLinkstatus = graphArr[g].itemLink.status; //NORMAL/LINK_MISSING/LINK_OUT_OF_DATE/ //alert(Linkstatus); if (myLinkstatus === LinkStatus.LINK_OUT_OF_DATE) { OUTresultArr.push(decodeURI(graphArr[g].itemLink.name)); } else if (myLinkstatus === LinkStatus.LINK_MISSING) { MISSINGresultArr.push(decodeURI(graphArr[g].itemLink.name)); } else if (myLinkstatus === LinkStatus.NORMAL) { NORMALresultArr.push(decodeURI(graphArr[g].itemLink.name)); //resultArr.push(decodeURI(graphArr[g].itemLink.filePath)); //ファイルパスの場合 } else if (myLinkstatus === LinkStatus.LINK_EMBEDDED) { } } NORMALresultArr = unique(NORMALresultArr); // 重複を削除したリスト NORMALresultArr = NORMALresultArr.sort(); // ソート MISSINGresultArr = unique(MISSINGresultArr); // 重複を削除したリスト MISSINGresultArr = MISSINGresultArr.sort(); // ソート OUTresultArr = unique(OUTresultArr); // 重複を削除したリスト OUTresultArr = OUTresultArr.sort(); // ソート // 画像があったらパスの一覧をテキストファイルに保存する if((NORMALresultArr.length != 0) || (MISSINGresultArr.length != 0) || (OUTresultArr.length != 0)){ // 新規ファイルオブジェクトをつくる var saveFile = new File(saveFolderPath + "/ " + actDocName + "_リンクファイル名情報.txt"); //元コード //var saveFile = new File(saveFolderPath + "/ ◆linkPath_" + actDocName + ".txt"); // 書き込みモードでファイルを開き、改行でjoinした配列を書き込んで閉じる saveFile.open("w"); //saveFile.write(); if (MISSINGresultArr.length != 0){ var success = saveFile.write("▼▼▼ 不明なリンクファイル名 ▼▼▼" + "\n" + MISSINGresultArr.join("\n") + "\n\n" +"計"+(MISSINGresultArr.length)+"点"+"\n\n\n"); } else { var success = saveFile.write("▼▼▼ 不明なリンクファイル名 ▼▼▼" + "\n" + "ありません。" + "\n\n\n"); } if (OUTresultArr.length != 0){ var success = saveFile.write("▼▼▼ 更新が必要なリンクファイル名 ▼▼▼" + "\n" + OUTresultArr.join("\n") + "\n\n" +"計"+(OUTresultArr.length)+"点"+ "\n\n\n"); } else { var success = saveFile.write("▼▼▼ 更新が必要なリンクファイル名 ▼▼▼" + "\n" + "ありません。" + "\n\n\n"); } if (NORMALresultArr.length != 0){ var success = saveFile.write("▼▼▼ 有効なリンクファイル名 ▼▼▼" + "\n" + NORMALresultArr.join("\n") + "\n\n" +"計"+(NORMALresultArr.length)+"点"+ "\n\n\n"); } else { var success = saveFile.write("▼▼▼ 有効なリンクファイル名 ▼▼▼" + "\n" + "ありません。" + "\n\n\n"); } saveFile.close(); // 書き込みが成功したらダイアログを出す(いらない) if(success) { alert("リンクファイル一覧を保存しました。\n" + "ファイル名 :\n" + decodeURI(saveFile.name)); saveFile.execute(); } } else { alert("リンクされた画像はありません。"); } } // 重複を削除したリスト function unique(array) { var storage = {}; var uniqueArray = []; var i,value; for ( i=0; i<array.length; i++) { value = array[i]; if (!(value in storage)) { storage[value] = true; uniqueArray.push(value); } } return uniqueArray; } |
【使い方】
InDesignファイルを開いた状態で、
スクリプトパネル > 作成したスクリプトをダブルクリックすると、
リンクファイル名が表示されます。
参考情報
InDesign CS で文書内の画像のパス一覧を書き出す JavaScript