DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

マスターページの名前を一括変更する

var doc = app.documents[0];
var msp = doc.masterSpreads;
var reg = /ほげ/; //検索ワード(/正規表現/か "文字列" とする)
var rep = "ぴよ"; //置換ワード("文字列" のみ)
for (var i=0; i<msp.length; i++) {
    msp[i].baseName = msp[i].baseName.replace(reg, rep);
}

MasterSpread.nameプロパティはreadonlyで、MasterSpread.baseNameプロパティはstring型で変更可能。
詳しく調べてないけどどういう仕様なのかな。

JavaScriptの正規表現を知らない人向けに一応説明しておくと、
スラッシュで囲む表現(/.../)で正規表現リテラルとなり、後ろにフラグを取ることができます。

フラグを何も指定しないと、先頭から検索して1回見つかればおしまいになる。
でも/.../gとしてgフラグ(グローバルフラグ)を付けておくと、複数回マッチさせられる。
/.../iとiフラグ(イグノアケースフラグ)を付けておくと、大文字・小文字を勘案せずにマッチさせられる。
あとmフラグ(マルチラインフラグ)もあるんですけどこれはいいか。

で、フラグは同時に指定できるので、/hoge/gimとかって指定ができます。まとめてマスターページの名前を変えることってあまりないとは思うんですけどね。