/Test_you

電子工作やプログラミングなど、やってみたことのメモ

PowerShellで、クリップボードのURLをHtml形式のリンクに変換する

下記のように、URLをHtml形式のリンクに変換します(文字列のHERE!はスクリプトで固定)
f:id:sonoka_gi:20210613104051p:plain
URLをチャットやメールなどに貼り付ける時、URLそのままだと長いので、短くすることが目的です。 適当なソフトが見つからなかったので、PowerShellで作ってみました。


1. 使い方

  • 下記のバッチファイルとPowerShellスクリプトを同一フォルダに配置
  • URLをクリップボードにコピー
  • convert_URL_to_html_format_link.bat を実行
  • 貼り付けたいアプリケーションでペースト
    • Html形式をサポートしているソフト(Outlook, Excel, Teamsなど)で使えるはず

2. バッチファイルとPowerShellスクリプト

ファイルは>こちら

powershell -v 5 -NoProfile -ExecutionPolicy Unrestricted .\convert_URL_to_html_format_link.ps1
# クリップボードにURLが格納されていたら、それをHTML形式のリンクに変換する
# ・実行時は PowerShell v 5 を指定のこと。Set-Clipboard の -AsHtml パラメーターが v5 でしか使えない
# ・生成するリンクが英語なのは、日本語の文字化け問題を解消できなかったから

# PowerShellのバージョンが不適切なら抜ける
if ( (Get-Host).Version.Major -ne 5 ) {
    Write-Host "This script requires powershell V5."
    exit
}

# クリップボード内容をテキスト形式で取得
$clipboard_text = Get-Clipboard -Format Text

# httpから始まる文字列ならURLと判断
if ( $clipboard_text -like "http*" )
{
    # HTMLタグでURLへのリンクを作り、Html形式でクリップボードに設定
    $html_link = "<a href=""" + $clipboard_text + """><b><i>HERE!</i></b></a>"
    Set-Clipboard -AsHtml $html_link

    # 生成内容をコンソールに出力
    Write-Host "Created Link:" $html_link
}

3. スクリプトの説明

クリップボードにURLリンクを設定する方法として、Set-Clipboard-asHtmlパラメーターを使いました(参照:Set-Clipboard)。 下記のように文字列($html_link)を渡すと、HTML形式でクリップボードに格納してくれます。 今回はa hrefタグで作ったURLのリンクを渡してます。

PS C:\> $html_link = "<a href=""https://www.google.com/"">Google</a>"
PS C:\> Set-Clipboard -AsHtml $html_link

クリップボードの状態 f:id:sonoka_gi:20210613104057p:plain
Outlookへの貼り付け結果
f:id:sonoka_gi:20210613104106p:plain

残念ながら、このパラメーターは PowerShell 7 では削除されているようで、Windows PowerShell 5 のみで実行可能です。また、html内に日本語を含むケースの文字化けを解決できなかったので、英語のみで使ってます。


参考にした情報