Win版IndesignCS5.5使っています。
スクリプティングガイドを見ながら他のホムペを見ながら・・・いろいろ勉強している最中です
今回教えて頂きたいことは
・ある段落スタイルが設定されているテキストを取得する
・テキストをある段落スタイルに再設定(入力)したい
の2つです
どうかご指導宜しくお願いします
<(_ _)>
ドキメントに1ページだけの表紙っぽいものを作りました
表紙はタイトル、本を管理するNo、発行日(本日)があり、それぞれ3つの違った段落スタイルが設定されています
以下自分でわかったこと
★段落スタイルを検索する
app.findTextPreferences = NothingEnum.nothing;
app.findTextPreferences.appliedParagraphStyle = "manual-no";
このあと本を管理するNo"manual-no"という段落スタイルが設定されているテキストをある変数に入れたいです
ディフォルトでは4512ABというテキストが入っています
変数に入れたらテキストの最後のアルファベットを更新して(例えばAB→AC)段落スタイル"manual-no"に再設定(入力)したいんです
同様に発行日には段落スタイル"manual-date"が設定されています
//今日の日付
var d = new Date();
if (d.getMonth() + 1 > 9){
//1月〜9月
var D_Date = (d.getFullYear() + "." + (d.getMonth() + 1) );
}
else{
//10月〜12月
var D_Date = (d.getFullYear() + ".0" + (d.getMonth() + 1) );
}
↑こんな処理は作成できるんですが
D_Dateを段落スタイル"manual-date"に再設定したいです
[14614] りさ (2012/09/14 Fri 10:24)
manual-noの部分を少し作ってみました。
app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.appliedParagraphStyle = "manual-no";
app.findGrepPreferences.findWhat = "(?<=\\d{4}[A-Z])[A-Z]";
var findStr = app.activeDocument.findGrep();
var newCode = findStr[0].contents.charCodeAt(0) + 1;
findStr[0].contents = String.fromCharCode(newCode);
正規表現で該当の最後のアルファベットを拾い上げ、
そのアルファベットの文字コードを+1して戻しています。
あまり細かく作ってないので、
おかしなことも起こるかと思いますが、
参考になれば…と。
[14615] dot (2012/09/14 Fri 15:20)
日付のほうは、スクリプトではなくテキスト変数yyyy.MMを入れてもできますね。
[14616] Subi (2012/09/14 Fri 15:48)
Subiさん、ご指導して頂きありがとうございます
参考させていだきます
<(_ _)>
[14618] りさ (2012/09/14 Fri 17:52)
dotさん、早々のご指導ありがとうございました
(^◇^)
自分のScriptに組み込みました
教えて頂きながらオブジェクト、プロパティ、メソッドを学んでいきたいと思います
ありがとうございました
<(_ _)>
[14617] りさ (2012/09/14 Fri 17:50)
教えて頂いた段落スタイルでのテキスト置換えは完璧でできました
ありがとうございます
<(_ _)>
あれから試行錯誤・・・いろいろ勉強してみたんですが
どうしてもわからないところがあります
(-_-;)
@指定した段落スタイルのテキストを変数に入れる
A変数にあるテキストを指定した段落スタイルのテキストに入れたい
なにをしたいかっていうと・・・
(~_~;)
置換の前にメッセージで
これからこれに変わるよっていうものを表示させOKボタンでテキストを変えたかったんです
ご指導よろしくお願いします
<(_ _)>
[14639] りさ (2012/09/18 Tue 18:30)
こんな感じでしょうか?
app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.appliedParagraphStyle = "manual-no";
app.findGrepPreferences.findWhat = "(?<=\\d{4}[A-Z])[A-Z]";
var findStr = app.activeDocument.findGrep();
var newCode = findStr[0].contents.charCodeAt(0) + 1;
var newStr = String.fromCharCode(newCode);
flag = confirm(findStr[0].contents + " を " + newStr + " に置き換えます。よろしいですか?");
if (flag == true) {findStr[0].contents = newStr;} else {alert("中止しました");exit();}
上のスクリプトでいえば、
findStr[0].contents
が取り出した文字列です。
あえて変数に入れていませんが。。。
[14643] dot (2012/09/19 Wed 10:04)
dotさん、早々のご指導ありがとうござます
<(_ _)>
出来ました!
これを元に
日付も変えるスクリプトを作成しましたぁ!(^^)!
がエラー
(~_~;)
世の中、そんなあまいもんじゃないぞぉーって感じですぅ(-_-;)
元の日付は
段落スタイルmanual-date
設定されているテキストは2012.03 →変わります
で・・・作成したのが
↓じゃ〜ん
//今日の日付
var d = new Date();
if (d.getMonth() + 1 > 9){
//1月〜9月
var D_Date = (d.getFullYear() + "." + (d.getMonth() + 1) );
}
else{
//10月〜12月
var D_Date = (d.getFullYear() + ".0" + (d.getMonth() + 1) );
}
app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.appliedParagraphStyle = "manual-date";
app.findGrepPreferences.findWhat = "\d{4}.\d{2}";
var findStr = app.activeDocument.findGrep();
flag = confirm(findStr[0].contents + " を " + D_Date + " に置き換えます。よろしいですか?");
if (flag == true) {findStr[0].contents = D_Date;} else {alert("中止しました");exit();}
たぶん日付の表現が違っているのかなぁ・・・・
↓
"\d{4}.\d{2}"
よろしくお願いします
<(_ _)>
[14645] りさ (2012/09/19 Wed 12:06)
app.findGrepPreferences.findWhat = "\\d{4}\\.\\d{2}";
これでいけるかと…
正規表現でピリオドは\をつけなきゃいけないので、
InDesign上で検索する場合は
\d{4}\.\d{2}
でいいのですが、
スクリプト上では\がひとつだと\が消えちゃうので、
\\としています。
[14646] dot (2012/09/19 Wed 13:11)
Dear dotさん
早々のご指導ありがとうございます
<(_ _)>
教えて頂いた通りでした
(^_^)v
心から感謝です
(^^♪
[14647] りさ (2012/09/19 Wed 15:20)
Dear dotさん
教えて頂いたモノで
下記のスプリプトを完成することができました(^_^)v
初心者レベルですが・・・・(~_~;)
ありがとうございました
↓↓↓↓↓↓
//メッセージ
alert ("マニュアルNo自動更新(末尾)と発行日改訂をします。大幅改訂の場合は手動で行って下さい","!確認");
//今日の日付
var d = new Date();
if (d.getMonth() + 1 > 9){
//1月〜9月
var D_Date = (d.getFullYear() + "." + (d.getMonth() + 1) );
}
else{
//10月〜12月
var D_Date = (d.getFullYear() + ".0" + (d.getMonth() + 1) );
}
//段落スタイルでの検索テキストの置換え
app.findGrepPreferences = NothingEnum.nothing;
//マニュアル番号
app.findGrepPreferences.appliedParagraphStyle = "manual-no";
var findStr = app.activeDocument.findGrep();
//現在のマニュアルNoを取得
var oldCode = findStr[0].contents;
//マニュアル番号検索
app.findGrepPreferences.findWhat = "(?<=\\d{7}[A-Z][A-Z])[A-Z]";
var findStr = app.activeDocument.findGrep();
var newCode = findStr[0].contents.charCodeAt(0) + 1;
var newStr = String.fromCharCode(newCode);
flag = confirm( oldCode + " の末尾を " + newStr + " に置き換えます【バーコードも置換】。よろしいですか?");
if (flag == true) {findStr[0].contents = String.fromCharCode(newCode);} else {alert("中止しました");exit();}
//日付
app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.appliedParagraphStyle = "manual-date";
app.findGrepPreferences.findWhat = "\\d{4}\\.\\d{2}";
var findStr2 = app.activeDocument.findGrep();
flag = confirm(findStr2[0].contents + " を " + D_Date + " に置き換えます。よろしいですか?");
if (flag == true) {findStr2[0].contents = D_Date;} else {alert("中止しました");exit();}
//マニュアルNoバーコード
app.findGrepPreferences.appliedParagraphStyle = "barcode";
var findStr1 = app.activeDocument.findGrep();
app.findGrepPreferences.findWhat = "(?<=\\d{7}[A-Z][A-Z])[A-Z]";
var findStr1 = app.activeDocument.findGrep();
var newCode1 = findStr1[0].contents.charCodeAt(0) + 1;
findStr1[0].contents = String.fromCharCode(newCode1);
[14648] りさ (2012/09/19 Wed 16:59)