忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[InDesign]
UndoModes.FAST_ENTIRE_SCRIPTとisValidのバグ(InDesignスクリプト)

バグっぽいものに出くわしたのでメモ。
UndoModes.FAST_ENTIRE_SCRIPTでスクリプトを実行しているとき、値がfalseであるようなisValidプロパティにアクセスすると、それまでの変更が元に戻ってしまうらしい。(CS6@Windows7で確認)

app.doScript(main,ScriptLanguage.JAVASCRIPT,[],UndoModes.FAST_ENTIRE_SCRIPT);
function main(){
    var Sel0=app.activeDocument.selection[0];
    Sel0.contents="かきかえたよ";
    alert(Sel0.contents);
    $.writeln(app.documents.item("ないよ").isValid);
    alert(Sel0.contents);
}

上記のスクリプトを、適当に文字を入れたテキストフレームを選択して実行すると…

テキストフレームのコンテンツを"かきかえたよ"に書き換え、アラートにそのコンテンツを表示する。もちろん "かきかえたよ" と表示される。
ここで、"ないよ"という名前のドキュメントを取得し、そのisValidプロパティにアクセスしてみる。そんな名前のドキュメントは無いのでfalseが返ってくる。
再度、テキストフレームのコンテンツをアラートすると、なぜか書き換える前のものが表示される。

回避方法:UndoModes.ENTIRE_SCRIPT にしておく。
速いからってなんでもFAST_ENTIRE_SCRIPTにしときゃいいってもんじゃないようですな。
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

無題

やはり、バグでしたか…
同様の問題に当たって
解決方法に悩んでいたので大変助かりました!

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

フリーエリア