選択したセルのoverflowsがおかしい?

このエントリはセルに絡んだバグ?のおはなしなんだ。いや、仕様ですって言われればそれまでなのだけどね。前回自動的にオーバーセットしたセルの内容を長体をかけて追込む方法をお伝えしたのだけど、ちょいと思い立って選択したセルのオーバーセットをちょこっと長体をかけて追込んじゃうってスクリプトを書いてみたんだ。

一応、コードとドキュメントのスクショも載っけておくね。

ovrfl1.png

slct = app.activeDocument.selection[0];
flow = slct.overflows;
scale = 100;
if (flow){
    txObj = slct.characters.everyItem();
    while (flow){
        scale–;
        txObj.horizontalScale = scale;
        flow=slct.overflows;
        }
    }

非常に単純なのだけど、溢れたセルを選択した上で実行すると収まるまで自動的に長体がかけられるはずだったのだけど、このスクリプトはエラーを吐くんだ。
何故エラーになるかというと、長体率を1%迄ループした上で次のループで-1するものだからできね〜よ!って怒られるわけだ。
ちょいとまってよ、実際手動で処理すると64%で収まっているのに…試しにループ内のflowをalertで表示させて観察すると一向にfalseになる気配がない。100回目のループでとうとうエラー発生www
で、先のスクリプトを改変して

slct = app.activeDocument.selection[0];
flow = slct.overflows;
scale = 100;
if (flow){
    txObj = slct.characters.everyItem();
    while (flow){
        scale–;
        txObj.horizontalScale = scale;
        flow=app.activeDocument.textFrames[0].tables[0].rows[2].cells[5].overflows;
        }
    }

と言う具合に選択範囲ではなく溢れたセルを直接指定して実行すると。スクリプトは正常に動くんだ。

ovrfl2.png

どうやら、選択範囲を指定した場合とダイレクトにセルを指定した場合では参照するデータが異なるみたいだね。
選択範囲というのは勿論マウスでドラッグして作るわけだね。ということはIndesign側からquartzへ表示用データが渡されて、表示されている画面上でOSのシステムがドラッグを検知してIndesign側に情報が伝わるというような感じで動作するわけだけど、その辺りの展開はひょっとするとディスプレイ向けのキャッシュ上で処理しちゃっているとか。ダイレクトに指定した場合はドキュメントと同一階層に展開されるキャッシュファイル上で処理していそうだしね。
まあ、スクリプトの動作中は表示がリフレッシュされないから、そんなデータでoverflows見られてもねぇwwwやっぱりバグですねバグ!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中