0 返信 最新の回答 日時: Mar 22, 2011 2:24 AM ユーザー:worker785

    IndesignCS5でリンク画像パスをテキスト出力したい

    worker785 Level 1

      ご質問いたします。

       

      IndesignCS3→CS5にアップグレードした際に、CS3では、以下のjavascriptで

      リンク画像パスをテキスト出力できていたのですが、CS5でエラーが出て、使用

      できなくなっております。

       

      どのように修正したらよいのか、教えてください。よろしくお願いいたします。

      JavaScriptコンソールでは、1行目にエラーが出ております。

       


      // アクティブな文書内の画像のパスをすべて書き出す

      // ドキュメントのあるフォルダに「linkPath_<ドキュメント名>.txt」をつくって書き出し
      // ページごとに分ける(「ページ数<タブ>パス<改行>」)

      if(app.documents.length > 0) {  ←ここで「Undefinedはオブジェクトではありません。」というエラー

        var resultArr = new Array; // 結果文字列の格納用(タブ区切りテキスト)

        var pageArr = app.activeDocument.pages; // ページの配列
        var pLen = pageArr.length;

        // 全ページループ
        for(var p = 0 ; p < pLen ; p++) {

          var tmpPage = pageArr[p];

          var graphArr = tmpPage.allGraphics; // 現在のページにある画像の配列
          var gLen = graphArr.length;

          // 全画像についてパスを取得
          for(var g = 0 ; g < gLen ; g++) {
            resultArr.push(tmpPage.name + "\t" + decodeURI(graphArr[g].itemLink.filePath));
          }

        } // 全ページループここまで


        // 画像があったらパスの一覧をテキストファイルに保存する
        if(resultArr.length != 0) {

          var saveFolderPath = app.activeDocument.filePath; // アクティブなドキュメントの保存フォルダ
          var actDocName = app.activeDocument.name; // アクティブなドキュメントの名前

          // 新規ファイルオブジェクトをつくる
          var saveFile = new File(saveFolderPath + "/linkPath_" + actDocName + ".txt");

          // 書き込みモードでファイルを開き、改行でjoinした配列を書き込んで閉じる
          saveFile.open("w");
          var success = saveFile.write(resultArr.join("\n"));
          saveFile.close();

          // 書き込みが成功したらダイアログを出す(いらない)
          if(success) {
            alert("リンクされた画像のパスを保存しました。\n" + "ファイル名 : " + decodeURI(saveFile.name));
          }

        }
        else {
          alert("リンクされた画像はありません。");
        }

      }