InDesign:レイヤーを記憶してるけどほっといてペースト

ひさびさー、ひさびさー。
転職でバタバタしておりました。
新しい仕事もまだまだ覚える事があり、いいトシだけどしばらくぺえぺえ新人なのでよろしくどうぞ。
仕事中にTwitter覗いたり、ましてや仕事と全然関係ないスクリプト書いたりFlash起動したりなんかとてもとても。。
というわけで昼休みにしたためた物となりますが

いつだかのTL

コレですね。当該レイヤーがロック、または非表示な時に「元の位置にペースト」すると出るお節介なやつ。
20141024a

なんとかなりそうな気がしたので作ってみました。リハビリを兼ねてやってみたです。



id_pasteinPlace_handler.jsx
MacOSX 10.9 InDesignCS3とCS6 で動作確認済み



2014.10.31 ver_d 以下の通り変更しました。
・CS4以前に未対応だったので書式を見直して対応

2014.10.31 ver_c
・外部アプリケーションでコピーしたプレーンテキストをペーストする際、過去の最後のInDesign上のコピー元レイヤーを参照してしまう不具合をあかつきさんよりご指摘いただき、万全ではありませんがひとまず文字ツールの使用中は動作しないよう変更しました

2014.10.27  ver_b
・通常のペーストも捕まえるよう修正
・「レイヤーを記憶してペースト」していないのにペースト後チェックが入ってしまう不具合を修正

 


 

さいしょ、「『元の位置にペースト』にイベントハンドラ立てて、ペーストの前にペースト先レイヤーの状況を見て、ロックされてたり非表示だったりしたら『レイヤーを記憶してペースト』オフにすりゃいいんでしょ」ぐらいに軽く考えてたんだけど、

よくよく考えたらペースト前にペースト先レイヤーがドレかなんてわからない。エスパーじゃない。

んじゃ、別ドキュメントにペーストして名前を拾えばよかろうのじゃろう、と思って、
ウィンドウを開かずに新規ドキュメント作成(スクリプトではできるのだ)してみたら、
前面に来ないのでペーストできないorz

やや焦りかけた頃、てんのこえが

そういえばヘルパーオブジェクトに変数を置いたことないぞ。
と思ってぐぐってたら見つかったのがコレ

鯵さん、こんなん出来ました。―コピーの履歴 in ID―

いや、確かあそこトラックバック弾くんだよなw こっちで
http://chuwa.iobb.net/tech/archive/2014/09/copy-history.html

というわけで名指し記事を放置してたんですねすいませんorz

 

というわけで完成。
使い方は、いつものスクリプト置き場のひとつ上の階層に「startup scripts」フォルダを作成し、
その中に置いておきます。InDesign起動時に読み込まれ、陰でこそこそ監視するタイプです。

20141024c

「レイヤーを記憶してペースト」にチェックが入っていて、
当該レイヤーがロック、または非表示な時。

20141024b
…に「元の位置にペースト」すると、その瞬間だけ「レイヤーを記憶してペースト」をオフにします。
ペースト直後また「レイヤーを記憶してペースト」はオンに戻ります。
ふつうのペーストには対応させていませんが対応自体は簡単です。どうする?(※ver_bで修正済み)

20141024d
アラートが出ますが、「なにこれうざい」と思われる珍しい方は、スクリプトの一行目を書き換えれば出なくできます。
難しくないので自分でやってください。開けば書き換え方も書いてありますから。

こうして、コピー元レイヤーではなく現在アクティブなレイヤーにペーストされる事となりますが、
その上でアクティブレイヤーがロックまたは非表示だった場合は正規のアラートが二重で出る事となります。
20141024a
これはしょうがないからしょうがない。

でーすー。