[ 掲示板に戻る ]

記事No.9608に関するスレッドです

全頁の特定の文字に文字スタイルをつけたい / tomtom
過去に「一括で文字スタイルをかけたい」があったので
・・・・・・・・・
(function(){
//検索文字列の指定
sKeyword = "positive";
//変更スタイルの指定
sChrStyleName = "non_break";

//単語の検索
aHitWord = app.activeDocument.search( sKeyword, true, true, false, false );
//ヒットした単語のスタイルを変更
for( i=0; i < aHitWord.length; i++ ){
aHitWord[i].appliedCharacterStyle = sChrStyleName;
}
})();
・・・・・・・・・・・
としたのですが、「app.activeDocument.search」が関数ではありません。と言うエラーになりました。
できれば全頁の「positive」と「diameter」と言う文字に「non_break」という文字スタイルを付けたいのです。
よろしくお願いします。

No.9608 2019/04/28(Sun) 10:55:19
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36

Re: 全頁の特定の文字に文字スタイルをつけたい / お〜まち URL
「search」メソッドはInDesignのバージョンが2〜CS2のときのものですので、CS3以降では使えないです。
changeTextもしくはchangeGrepメソッドを使います。

No.9609 2019/04/29(Mon) 09:36:15
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.38

Re: 全頁の特定の文字に文字スタイルをつけたい / tomtom
ありがとうございます。

今度は、下記の「特定の文字を指定したスタイルに設定する」とあったので試した見ましたが、

「selObj[i].paragraphs[j].insertionPoints.itemByRange().applyStyleが関数ではありません。」
と言うエラーがでます。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
(function (){
var checkWord = "positive"; // スタイルを適用する文字
var charStyleName = "non_break"; // 適用するスタイル名
var selObj = app.selection;
var cStyle = app.activeDocument.characterStyles.item(charStyleName);

for (var i=0; i<selObj.length; i++){
for (var j=0; j<selObj[i].paragraphs.length; j++){
var txt = selObj[i].paragraphs[j].contents;

var p = txt.indexOf(checkWord);
while (p > -1){
selObj[i].paragraphs[j].insertionPoints.itemByRange(p, p+checkWord.length).applyStyle(cStyle);
p = txt.indexOf(checkWord, p + checkWord.length);
}
}
}
})();
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
どこに問題があるのでしょうか?
全然わからなくて申し訳ございません。

No.9610 2019/04/29(Mon) 20:43:21
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36

Re: 全頁の特定の文字に文字スタイルをつけたい / お〜まち URL
applyStyle()メソッドもInDesignのバージョンが2〜CS2のときのものです。
どのバージョンを使われているのか分からないですが、お使いのバージョンに対応した資料を使わないと、永遠に分からないですよ。
お勧めの入門書(PDF版)があるのですが、ここでは営業活動が禁止されているので……

私ならこうするというのを書いておきますので、参考にしてください。CS3以降であれば動くはずです。

app.findGrepPreferences.findWhat = "positive|diameter";
app.changeGrepPreferences.appliedCharacterStyle = app.documents[0].characterStyles.itemByName("non_break");
app.documents[0].changeGrep();

No.9611 2019/04/30(Tue) 07:00:21
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.38

Re: 全頁の特定の文字に文字スタイルをつけたい / お〜まち URL
あ、設定クリアを入れるのを忘れてました。
先頭に次の2行を追加してください。
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;

No.9612 2019/04/30(Tue) 08:04:32
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.38

Re: 全頁の特定の文字に文字スタイルをつけたい / tomtom
ご連絡ありがとうございます。pdfダウンロードしました。
(勉強したいと思います)
CS5を使用していますので、書いていただいたものでエラーは出ませんでした。
しかし、特定の文字「positive」自体が消えてなくなりました。
文字はそのままで、特定の文字に文字スタイルをつける方法教えていただけますか。
よろしくお願いします。

No.9613 2019/05/02(Thu) 19:53:23
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36

Re: 全頁の特定の文字に文字スタイルをつけたい / tomtom
すみません 間違いました。

app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
app.findGrepPreferences.findWhat = "positive|diameter";
app.documents[0].characterStyles.itemByName("non_break");
app.documents[0].changeGrep();
ですと、特定の文字「positive」自体が消えてしまい

app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
app.findGrepPreferences.findWhat = "positive|diameter";
app.changeGrepPreferences.appliedCharacterStyle=app.documents[0].characterStyles.itemByName("non_break");
app.documents[0].changeGrep();

だと、
appliedCharacterStyleの値が無効。予想される値はString, CharacterStyle or NothingEnum enumerator ですが、値 nothingを受け取りました。
となります。
何がおかしいのでしょうか?
よろしくお願いします。

No.9614 2019/05/02(Thu) 21:28:41
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36

Re: 全頁の特定の文字に文字スタイルをつけたい / お〜まち URL
下の方のコードで合っています。私の方では問題なく動きます。

エラーは、文字スタイル「non_break」がないと言っているので、文字スタイル名とコード中のスタイル名が一致しているか確認してください。

No.9615 2019/05/02(Thu) 23:17:03
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.38

Re: 全頁の特定の文字に文字スタイルをつけたい / tomtom
原因がわかりました。
文字スタイル「non_break」がフォルダ内に収められていました。
移動しましたら動きました。
いろいろありがとうございました。
指南書読んで勉強したいと思います。

No.9616 2019/05/03(Fri) 07:03:44
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36

Re: 全頁の特定の文字に文字スタイルをつけたい / (z-) URL
話の流れから、安易な策を出すようにも取られそうでアレですが、
スクリプトのバージョン指定をしてやることで大昔の物でもそこそこ動いたりしますので参考までに。

var orgVer = app.scriptPreferences.version; //元のバージョン
app.scriptPreferences.version = "4"; //CS2

//ここでどっかから拾ってきた超古いスクリプトを実行

app.scriptPreferences.version = orgVer; //バージョンを戻す

バージョン変更のやりっ放しは非常に危険なので、必ず処理後に戻すことが肝要です。
また、処理の途中でエラーで頓挫した場合、別途バージョンを戻すだけのスクリプトを実行するかInDesignを再起動する必要があります。

あくまで参考まで。

No.9617 2019/05/07(Tue) 12:14:50
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8