【Windows 10】クリップボードの中身を操作して不要な書式を省いたテキストだけにする:Tech TIPS
WordなどにWebページを単純にコピーすると、書式を含むテキストがペーストされてしまう。単純なテキストとして貼り付けるには、右クリックメニューで[貼り付けオプション]の[テキストのみ保持]を選択してペーストしなければならない。これを簡単なコマンドでテキストのみにする方法を紹介しよう。
対象:Windows 10
テキスト形式で貼り付けるには?
Microsoft WordなどにWebページをペースト(貼り付け)すると、書式を含めてコピーされてしまう。テキストのみを貼り付ける場合は少々面倒な作業が必要になる。特にGmailでは、[貼り付けオプション]がなく、[テキストのみ保持]でペーストできないのでなおさら厄介だ。
Webページなどでコピーしたものを「Microsoft Word」などにペースト(貼り付け)すると、Webページに設定されていた書式設定まで含めてコピーされてしまう。便利な点もあるが、テキストのみを貼り付けたい場合には、貼り付けたい位置で右クリックメニューを開き、[貼り付けオプション]の[テキストのみ保持]を選択しなければならず、少々面倒だ。
Webページの一部をテキスト形式でWordにコピーしたい(2)
[Ctrl]+[V]キーでペーストすると、書式付きとなってしまうので、マウスの右クリックメニューから[貼り付けオプション]−[テキストのみ保持]を選択してペーストする。
また、Webブラウザ上のサービスでは、右クリックメニューに[貼り付けオプション]の項目がなく、貼り付け可能な最もリッチな情報(Webページの一部を貼り付けた場合は、HTML形式となる)が貼り付けられてしまう(サービスによっては[Ctrl]+[Shift]+[V]キーでテキストのみをペーストできることもあるが)。
テキスト形式としたい場合は、いったんメモ帳などに貼り付けて、書式設定のないテキスト状態にしてから、コピーして貼り付けるという作業を行っている人も意外と多いのではないだろうか。これはかなり面倒だ。
実は、Webページなどをコピーすると、クリップボードにはHTML形式のデータの他にテキストデータ、場合によってはビットマップなどのさまざまな形式で保存される仕組みとなっている(クリップボードに仕組みについては、Tech TIPS「Windowsでクリップボードの中身をのぞき見る方法」参照のこと)。貼り付ける際には、クリップボードの中から貼り付け側のアプリケーションが受け取り可能な形式の中で、最もリッチなものが選択される。[貼り付けオプション]では、クリップボードの中にあるデータの形式を選択可能にすることで、テキストのみなどの貼り付けを可能にしているわけだ。
[貼り付けオプション]がない場合に、テキストのみで貼り付けたいのであれば、クリップボードの中にあるデータをテキスト形式のみにしてしまえばよい。メモ帳に貼り付けて、再びコピーするのは、まさにこの作業でもある。
メモ帳に貼り付けるのは面倒なので、これをPowerShellのコマンドレットで実行できる方法を考えてみた。以下、Windows 10に標準装備のPowerShell 5.1を前提として、その手順を紹介しよう(PowerShell 5.1より後のバージョンのPowerShellについては、記事末尾で注意点を説明する)。
PowerShellでクリップボードをテキストのみにする
[スタート]メニューで[Windows PowerShell]を選択して、PowerShellの画面を開く。管理者アカウントで起動する必要はない。
Webページなどをコピー([Ctrl]+[C]キー)してクリップボードにデータを入れた状態にしておき、以下のコマンドを実行する。
Get-Clipboard -Format Text | Clip
「Get-Clipboard」は、クリップボードのデータを取り出すコマンドレットだ。「-Format Text」オプションでテキスト形式のデータのみを取り出し、それを「Clip」でクリップボードにリダイレクトして戻している。クリップボードをテキスト形式のデータのみにするおまじないと思えばいい。
これを実行後、貼り付けたいアプリケーションで[Ctrl]+[V]キーを押せば、[貼り付けオプション]で[テキストのみを保持]などを選択しなくても、テキスト形式で貼り付けられる。
文字化けする場合の対処方法
上記のコマンドレットを実行しても、文字化けしてしまい思ったように貼り付けられないことがある。これは、PowerShellの文字コードの扱いに起因する。上記のコマンドレットでは、Get-Clipboardでテキスト形式のみ取り出した後に、「Clip」で「clip.exe(クリップボードの実態)」にリダイレクトしている。この際、PowerShellのデフォルトでは、文字コードが「US-ASCII」となっているため、日本語がうまく扱えずに文字化けを起こしてしまうのだ。
PowerShellのコマンドレットで文字化けする場合
PowerShellでは、「US-ASCII」がデフォルトの出力文字コードとなっている。そのため、起動した状態で上記のコマンドレットを実行すると、日本語部分が「??」になってしまう。
上記のコマンドレットを実行して、文字化けが起きている場合、PowerShell上で、「$OutputEncoding」を実行してみよう。以下のように表示されて、「EncodingName」が「US-ASCII」となっているはずだ。
PowerShellの文字コードを確認する(1)
デフォルトの状態(PowerShellを起動した状態)では、「EncodingName」が「US-ASCII」となっているため、このままでは日本語が扱えない。
以下のコマンドレットを実行して、日本語(Shift-JIS)が扱えるようにしよう。
$OutputEncoding = [Console]::OutputEncoding
今度は、「EncodingName」が「日本語 (シフト JIS)」となるはずだ。
PowerShellの文字コードを確認する(2)
最初のコマンドレットで、エンコーディングの文字コードを「コンソール(シフトJIS)」に変更する。これで、「EncodingName」が「日本語 (シフト JIS)」となり、日本語が扱えるようになる。
これで文字化けにならず、テキストが貼り付けられるようになったはずだ。もし文字化けが変わらない場合は、次のようにShift-JISを明示して指定してみよう。
$OutputEncoding = [System.Text.Encoding]::GetEncoding("Shift-JIS")
なお、クリップボードにコピーしたテキストに絵文字などのShift-JISでは表現できない文字が含まれていた場合、上記のようにエンコーディングを変更しても文字化けしてしまうので注意してほしい。
簡単にコマンドレットを実行する方法
上記のコマンドレットは、PowerShellを起動するたびに実行しなければならず少々面倒だ。また、Webページなどを貼り付けるたびに、毎回、PowerShellを起動するのも手間である。
テキストのみにするショートカットを作成する
そこで、デスクトップにエンコードをShift-JISにして、クリップボードからテキストのみを取り出して、クリップボードに戻すPowerShellのショートカットを作成しておこう。
Copyright© Digital Advantage Corp. All Rights Reserved.