2 返信 最新の回答 日時: Feb 14, 2007 10:14 PM ユーザー:(Saik)

    ハイパーリンクのDestinationの変更方法

      はじめてフォーラムに参加します。

      InDesignCS2 OS WindowsXP SP2を使用しています。
      JavaScriptを使用して、ハイパーリンクのDestinationの変更を行おうとして
      いるのですがうまくいきません。
      どのようなスクリプトを記述すればよいのか、ご教示いただきたく。

      やりたいことを具体的に書くと、
      book名 c:¥book1.indb
      book1.indbに含まれるドキュメント c:¥a1.indd c:¥b1.indd
      c:¥a1.indd内に、c:¥b0.inddへのハイパーリンクが作成されている
      という状態において、
      a1.indd内のc:¥b0.indd へのハイパーリンクをc:¥b1.inddに付替えたい。
      ただし、c:¥b0.inddとc:¥b1.inddは全く同じファイル。
      ということです。

      以下のような処理をためしてみました。がNGでした。
      with (app){
      if (books.length != 0){
      for (var b = 0;b < books.length;b++){
      for (var bc = 0;bc < books[b].bookContents.length;bc++){
      doc = open(books[b].bookContents[bc].fullName) ;
      for (var i=0;i < doc.hyperlinks.length;i++){
      objHl=doc.hyperlinks[i];
      objHl.destination.destinationPage.parent.parent [次行へ継続]
      .fullName='/C:/b1.indd';  ☆
      }
      }
      }
      }
      }
      とすると、☆のところでfullNameは読み取り専用です というエラーになりま
      す。

      ☆のところを
      objHl.destination.destinationPage.parent.parent [次行へ継続]
      .place('/C:/b1.indd');
      という記述に変更すると、
      「このファイルを割り付けできません。要求された操作用のフィルタが見つか
      りません。」というエラーになります。

      いろいろ考えたのですが、リンク先のファイル名を変更する方法がわかりませ
      ん。

      変更ができないなら、いったん削除して追加することはできないかと考えて、
      doc.hyperlinks[i].remove();
      newLink=[次行へ継続]
      doc.hyperlinks.add([HyperlinkSource],[HyperlinkPageDestination]);
      とすればできるかな?というのも試してみたのですが、
      HyperlinkPageDestinationオブジェクトを新規に作成する方法がわからず、
      手詰まりになってしまいました。

      だらだら長文になりましたが、ハイパーリンク先を変更する あるいは 新規に
      作成する方法をご存知の方々、なにとぞ、アドバイスお願いします。