InDesign上でプレーンテキストでペーストする

InDesign上で作業していると、書式設定を持たないプレーンテキストでペースト作業をしたいケースがあります。
それは、テキストフレーム内の挿入ポイントあるいは選択された文字列に設定されたフォーマットを活かして文字列だけをペーストしたいといった場合です。
ペーストしたいテキストを何処から持ってくるかによってやり方が異なってきます。

◆他のアプリケーションからコピーして来て、ペーストする場合
この場合は、InDesignの環境設定内の「クリップボードの管理」で図のようにテキストのみをチェックしておけばプレーンテキストで処理されます。

1

Wordなどの書式設定も持ったアプリケーションからのコピー&ペーストでも大丈夫です。
(もう1つの方法として、他のアプリケーションからドラッグ&ドロップで挿入する方法も便利です)

問題は、InDesign上でのコピー&ペースト時にコピーされた内容をプレーンテキストとしてペーストするときにどうするかということです。

◆InDesign上でのコピー&ペーストの場合
通常のテキストフレーム内の挿入ポイントあるいは選択された文字列を対象にした場合は、有り難いことにInDesignがその機能を持っていますので、編集メニュー内の「フォーマットなしでペースト」を選択/実行すればプレーンテキストでペーストしてくれます。
ところが、「フォーマットなしでペースト」がアクティブにならないケースがあります。

paste

図の例で、表の編集作業で、複数のセルにまたがった「たちつてと」をコピーして右の列にある「あいうえお」に上書きしたいのですが、書式は残したいといった場合などです。
セルの範囲選択で「たちつてと」をコピーして右の列にある「あいうえお」に上書きするばあいには、「フォーマットなしでペースト」はアクティブにはなってくれません。
そのままペーストすると、真ん中の「あいうえお」がそのままの書式設定/セルの罫線・塗り設定まで含めてフォーマットでペーストされてしまいます。
一旦プレーンテキストエディタにペースとして、それを改めてコピーしてから「あいうえお」に上書きするという方法が一番わかりやすい方法でしょう。ですが、面倒です。
そこで、古い自作のスクリプトを引っ張りだしてきました。スクリプトでクリップボード内を処理してプレーンテキストを抜き出してからペーストするというものです。
こんな風になります。(OS X 10.4の頃に書いたものです)

set theFrontApp to (path to frontmost application) as Unicode text
set theFrontAppName to (displayed name of (info for (theFrontApp as alias)))

my getPlainText()

delay 0.5
tell application theFrontAppName to activate
tell application "System Events"
	tell process theFrontAppName
		keystroke "v" using command down
	end tell
end tell

to getPlainText()
	set clipb to (clipboard info) as string
	if (clipb contains "text") or (clipb contains "string") then
		set theUnicode_Text to (the clipboard as Unicode text)
		set Textdata to (theUnicode_Text as string) as record
		set the clipboard to «class ktxt» of Textdata
	else
		tell application "System Events"
			activate
			display dialog "クリップボードの内容が適切ではないようです。" & return & "テキストをコピーしてから実行して下さい。" buttons {"やんぬるかな!!"} default button 1 with icon 2 giving up after 2
		end tell
	end if
end getPlainText

OS X 10.9の現時点でも、«class ktxt»で抜き出せるようですが、なかなか手強い‘clipboard info’です。
汎用性を持たせて、スクリプトメニューやホットキーユーティリティから実行するように書いてあります。InDesign用としてスクリプトパレットから実行するのであれば、アプリケーションを決め打ちにできますから若干処理を速くできるでしょう。
更に早い処理を望むのであれば、‘Plain Clip.app’<http://www.bluem.net/en/mac/plain-clip/>を使うという手があります。

set theFrontApp to (path to frontmost application) as Unicode text
tell application "Plain Clip" to launch
delay 0.1
tell application theFrontApp to activate
tell application "System Events"
	tell process theFrontApp
		keystroke "v" using command down
	end tell
end tell

この‘Plain Clip.app’は最初のリリースが2004年で最終更新が2013年9月となっていて、久しぶりにHPを見てみるといつの間にやらシェルスクリプトからも実行できるようです。
となると、ホットキーユーティリティに組み込んでホットキーで起動すれば、更に素早いレスポンスが期待できそうです。

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中