2011年7月27日水曜日

失敗ログ その1

古旗本に載っている「空のテキストフレームを削除する」は難しすぎて理解できなかったので、骨子部分を抜き出して自分なりに肉付けする履歴。

if構文はif (条件) {処理}で成立している。
選択した空テキストフレームは↓で削除できる。
var selObj = app. activeDocument. selection [0] ;
if (selObj. contents == "")
{
selObj. remove() ;
};

選択した3つのテキストフレームの中に空白テキストフレームがある場合、↓で処理される。
var selObj = app. activeDocument. selection [0] ;
if (selObj. contents == "")
{
selObj. remove() ;
};

selObj = app. activeDocument. selection[1];
if (selObj. contents == "")
{
selObj. remove() ;
};

selObj = app. activeDocument. selection[2];
if (selObj. contents == "")
{
selObj. remove() ;
};
原始的な力技だがselection[100]まで作って置けば実際の仕事で使えるかも知れない。急いで対応しなければならない時に慣れないfunctionやforで時間を費やすよりこちらの方が初心者にはいいかもしれない。とはいえ自分の勉強のためにfunction成立の流れで作ってみる。

流れ1
selObj = app. activeDocument. selection [0];
kara();
selObj = app. activeDocument. selection [1];
kara();
selObj = app. activeDocument. selection [2];
kara();

function kara (){
if (selObj. contents == "")
{
selObj. remove() ;
}
};

流れ2
kara(0);
kara(1);
kara(2);

function kara (No){
selObj = app. activeDocument. selection [No];
if (selObj. contents == "")
{
selObj. remove(No) ;
}
};

流れ3
var selObj = app. activeDocument. selection ;
for (i =0; i<selObj. length; i++)
{
kara (i);
}

function kara (No){
if (selObj [No]. contents == "")
{
selObj [No]. remove() ;
}
};

流れ4
(function (){
var selObj = app. activeDocument. selection;
for (var i =0; i<selObj. length; i++)
{
if (selObj[i]. contents == "")
{
selObj[i]. remove() ;
}
}
})();

ここまできて気づく。
流れ3と4は選択数の制限無く処理されるものの、テキストフレームに色が付けられている空のテキストフレームを選択するとエラーになってしまう。最初の簡単な文からしてそうだ。検証が甘かった。。。

0 件のコメント:

コメントを投稿