ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

【改変】テキストを正体に戻す

テキストフレームに流し込まれたテキストをすべて正体に戻すJavaScript。

デザイン案を作成したあとにダミーを流してFMT化するときとかに使います。

意図してない長体がかかったままFMT化しちゃうと後で泣けてくるので…。

<仕様>

●テキストフレームを選択している場合は選択しているものを対象に(複数選択可)、

 選択していない場合はすべてのテキストフレームを対象にします

●グループは考慮してません下記に修正しました

●ドキュメント全体処理の際にグループされたテキストフレームは考慮してません

 ダイレクト選択ツールで選択、およびドラッグして選択してから

 スクリプトを起動するとグループされたテキストフレームでも処理できます

Twitterで@ik_osuさんのご指摘を受けて一部スクリプトを修正して、仕様を書き換えています。

使用する方は落とし直してください。

これの表組版とか需要あったりするのかな?

//作業するドキュメントなどを変数に代入

var docObj = app.activeDocument;

//選択しているページアイテムを変数に格納

selObj = app.activeDocument.selection;

var textFrameCount = 0 ; //テキストフレームを数えるため

if (selObj.length == 0) {

var wObj = app.dialogs.add({ name:"注意" });

var tmp = wObj.dialogColumns.add();

tmp.staticTexts.add({staticLabel:"ドキュメント全体のテキストフレームを正体にします ", minWidth:120 });

var buttonResult = wObj.show();

wObj.destroy() ;

if (buttonResult == true) { //OKが押されたら

allPage(docObj) ; //ドキュメント全体の処理

} else {//キャンセルが押されたら

alert("処理を中止します");

exit() ;

}

} else {

var wObj = app.dialogs.add({ name:"注意" });

var tmp = wObj.dialogColumns.add();

tmp.staticTexts.add({staticLabel:"選択しているテキストフレームを正体にします ", minWidth:120 });

var buttonResult = wObj.show();

wObj.destroy() ;

if (buttonResult == true) { //OKが押されたら

selectTextFrame(selObj);//選択しているテキストフレームの処理

} else {//キャンセルが押されたら

alert("処理を中止します");

exit() ;

}

}

//ドキュメント全体の処理

function allPage(docObj) {

for (i = 0 ; i < docObj.pages.length ; i ++) {

var myPage = app.activeDocument.pages[i];

for (j = 0 ; j < myPage.pageItems.length ; j++) {

myPage.pageItems[j].select() ;

var checkFrame = app.selection[0] ;

if (checkFrame.constructor.name == "TextFrame") {

textFrameCount ++ ; //テキストフレームの数を数える

for (h = 0 ; h < checkFrame.paragraphs.length ; h ++) {

checkFrame.paragraphs[h].horizontalScale = 100 ; //正体に

}

}

}

}

if (textFrameCount == 0) {

alert("テキストフレームがありません。処理を中止します")

exit() ;

}

alert("全ページのテキストフレームを正体にしました")

}

//選択しているテキストフレームの処理

function selectTextFrame(selObj) {

for (j = 0 ; j < selObj.length ; j++) {

if (selObj[j].constructor.name =="TextFrame") {

textFrameCount ++ ; //テキストフレームの数を数える

for (h = 0 ; h < selObj[j].paragraphs.length ; h ++) {

selObj[j].paragraphs[h].horizontalScale = 100 ;

}

}

}

if (textFrameCount == 0) {

alert("テキストフレームがありません。処理を中止します")

exit() ;

}

alert("選択していた " + selObj.length + " つのうちの " + textFrameCount + " テキストフレームを正体にしました")

}