DTP駆け込み寺
  1. [14578] InDesignのJavaスクリプトで検索置換について たいし 2012/09/04 14:11
    1. [14579] Re: InDesignのJavaスクリプトで検索置換 Subi 2012/09/04 14:50
      1. [14580] Re^2: InDesignのJavaスクリプトで検索置換 たいし 2012/09/04 15:49 *
        1. [14581] Re^3: InDesignのJavaスクリプトで検索置換 Subi 2012/09/04 16:25
          1. [14582] Re^4: InDesignのJavaスクリプトで検索置換 たいし 2012/09/04 17:38 *
            1. [14583] Re^5: InDesignのJavaスクリプトで検索置換 Subi 2012/09/04 17:52
              1. [14584] Re^6: InDesignのJavaスクリプトで検索置換 たいし 2012/09/04 18:02

[ 返信 ]

InDesignのJavaスクリプトで検索置換について

Windows7 Service Pack1 InDesignCS 5.0を使っています。
Javaスクリプトで特定の段落スタイルや文字スタイルの文字を一括置換する方法を教えてください。

たとえば段落スタイル「Paragraph」の中の半角括弧「(」を全角括弧「(」に置換するJavaスクリプトです。
同じく文字スタイル「Para」の中の半角括弧「)」を全角括弧「)」に置換するJavaスクリプトです。

以前、あるサイトで見つけて下記の様に作ってみたのですが、特定の段落スタイルや文字スタイルで置換する方法教えてください。
また下記ではメインフレーム以外の図などのフレーム内の文字にも対応しませんでした。
よろしくお願いします。

var keyword = "("; // 置換元の文字
var repWord = "("; // 置換後の文字
app.findTextPreferences = NothingEnum.nothing; // オプションはすべてなし。false
app.changeTextPreferences = NothingEnum.nothing; // オプションはすべてなし。false
app.findTextPreferences.findWhat = keyword; // 検索文字を制定
app.changeTextPreferences.changeTo = repWord; // 置換文字を指定
for (var j=0; j<app.activeDocument.pages.length; j++){
var pageObj = app.activeDocument.pages[j]; // 1ページごと置換
for (var i=0; i<pageObj.textFrames.length; i++){
if (pageObj.textFrames[i].parentStory.contents.length > 0) {
pageObj.textFrames[i].parentStory.changeText();
}
}
}

[14578] たいし (2012/09/04 Tue 14:11)

[ 返信 ]


Re: InDesignのJavaスクリプトで検索置換

これでどうですか?

app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

var keyword = "("; // 置換元の文字
var repWord = "("; // 置換後の文字

//段落スタイルを検索する場合
app.findTextPreferences.appliedParagraphStyle = "段落スタイル名";
//文字スタイルを検索する場合
app.findTextPreferences.appliedCharacterStyle = "文字スタイル名";

app.findTextPreferences.findWhat = keyword;
app.changeTextPreferences.changeTo = repWord;
app.activeDocument.changeText ();

[14579] Subi (2012/09/04 Tue 14:50)

[ 返信 ]


Re^2: InDesignのJavaスクリプトで検索置換

Re^2: InDesignのJavaスクリプトで検索置換

早速、ご連絡ありがとうございます。
試してみましたら
添付画像のJavaScriptエラーが出るんですが、なぜでしょうか?

> これでどうですか?
>
> app.findTextPreferences = NothingEnum.nothing;
> app.changeTextPreferences = NothingEnum.nothing;
>
> var keyword = "("; // 置換元の文字
> var repWord = "("; // 置換後の文字
>
> //段落スタイルを検索する場合
> app.findTextPreferences.appliedParagraphStyle = "段落スタイル名";
> //文字スタイルを検索する場合
> app.findTextPreferences.appliedCharacterStyle = "文字スタイル名";
>
> app.findTextPreferences.findWhat = keyword;
> app.changeTextPreferences.changeTo = repWord;
> app.activeDocument.changeText ();

[14580] たいし (2012/09/04 Tue 15:49)

[ 返信 ]


Re^3: InDesignのJavaスクリプトで検索置換

「Paragraph」という名前の段落スタイルがないので実行できないよ、というメッセージです。
検索したい段落スタイル名をもう一度確認してみてください。

[14581] Subi (2012/09/04 Tue 16:25)

[ 返信 ]


Re^4: InDesignのJavaスクリプトで検索置換

Re^4: InDesignのJavaスクリプトで検索置換

ご連絡本当にありがとうございます。
「Paragraph」という名前の段落スタイルが無いという原因わかりました。
段落スタイルで「Body」という名のフォルダを作成してその中に「
Paragraph」を入れていたからのようです。
「Paragraph」を段落スタイルの直下に置くとスクリプトは動作しました。
実際の検索画面を表示(添付図)したら「Paragraph(Body)」となってましたのでその様に記述たのですが同じスタイルが無いというエラーになります。
この場合の書き方を教えてください。
よろしくお願いします。

> 「Paragraph」という名前の段落スタイルがないので実行できないよ、というメッセージです。
> 検索したい段落スタイル名をもう一度確認してみてください。

[14582] たいし (2012/09/04 Tue 17:38)

[ 返信 ]


Re^5: InDesignのJavaスクリプトで検索置換

どうぞ。

app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

var keyword = "("; // 置換元の文字
var repWord = "("; // 置換後の文字
var pStyle = app.activeDocument.paragraphStyleGroups.itemByName("Body").paragraphStyles.itemByName("Paragraph");

app.findTextPreferences.appliedParagraphStyle = pStyle;

app.findTextPreferences.findWhat = keyword;
app.changeTextPreferences.changeTo = repWord;
app.activeDocument.changeText ();

[14583] Subi (2012/09/04 Tue 17:52)

[ 返信 ]


Re^6: InDesignのJavaスクリプトで検索置換

動きました。
ありがとうございました。

> どうぞ。
>
> app.findTextPreferences = NothingEnum.nothing;
> app.changeTextPreferences = NothingEnum.nothing;
>
> var keyword = "("; // 置換元の文字
> var repWord = "("; // 置換後の文字
> var pStyle = app.activeDocument.paragraphStyleGroups.itemByName("Body").paragraphStyles.itemByName("Paragraph");
>
> app.findTextPreferences.appliedParagraphStyle = pStyle;
>
> app.findTextPreferences.findWhat = keyword;
> app.changeTextPreferences.changeTo = repWord;
> app.activeDocument.changeText ();

[14584] たいし (2012/09/04 Tue 18:02)