忍者ブログ

ぼんぷろぐ

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

[InDesign]
テキストをコピペしてテキストフレームができたときに教えてくれるスクリプト

InDesignでは「テキストカーソルを置いてない状態でテキストをペーストすると、新しく作られたテキストフレーム内にペーストされる」という仕様になっていますが、そういうペーストをしたときに警告を出すスクリプトを書いてみました。



もちろん事故防止のためです。別にやらかしたわけではないんですけどね。考えてみたら怖いなーと思ったので。特に怖いのは「文字ツールを使っているが何も選択していない」とき。普通はペーストしたテキストフレーム等はペースト直後に選択された状態になりますが、このときだけ選択状態は変わらず、静かに画面中央あたりにテキストフレームが生まれます。


ダイアログ文の自信なさげな感じを見てわかるとおり、判定は確実じゃありません。自動生成されるテキストフレームが、いつも150pt×150ptのサイズであることを利用しているため、偶然同じサイズのテキストフレームをペーストしたときにも同じ警告が出てしまいます。まあウチはmm単位系でやってるからまず起きないし…てことで深入りしませんでした。


使い方は以下のコードを拡張子jsxで保存してStartup Scriptsフォルダに入れるだけ。「いいえ」を押したらアンドゥしてくれる機能つき
#targetengine "CopipeCheck"
function myHandler() {
    try{
    var sel0 = app.selection[0];
    if (!sel0) sel0=app.layoutWindows[0].activeLayer.textFrames[0]
    if (sel0.constructor.name != "TextFrame") return;
    app.scriptPreferences.measurementUnit = MeasurementUnits.POINTS;
    var vb = sel0.visibleBounds;
    if (Math.abs(vb[2] - vb[0] - 150) + Math.abs(vb[3] - vb[1] - 150) < 0.001) {
        if (!confirm("テキストがテキストフレームとしてペーストされたかも…\nいいですか?")) app.activeDocument.undo()
    }
    }catch(e){}
}

function addEL(obj, eventName, handler, name) {
    var el0 = obj.eventListeners.item(name);
    if (el0.isValid) el0.remove();
    obj.addEventListener(eventName, handler).name = name;
}
addEL(app.menuActions.item("ペースト"), "afterInvoke", myHandler, "CopipeCheck1");
PR

コメント

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

プロフィール

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

InDesignスクリプトについて

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

twitter

5つの「く」

ハタハタのすばらしさをまとめました。