カテゴリ
パソコン関連のお得情報
入力したテキストをきっかけに発動する #KeyboardMaestro の「Typed String Trigger」を使うことで、桁区切りのカンマ、時刻、日付などの入力が爆速になります。 pic.twitter.com/nKN7VkmJ2u
— DTP Transit (@DTP_Transit) February 20, 2025
@DTP_TransitさんがMacでKeybordMAestroを使っためちゃめちゃ便利なテキストコンバーターを紹介していた!でも私の仕事環境はWindowsなんだよね…
AHKとPowerShellを組み合わせれば、WindowsでもF6キー一発で自動変換できます!
この記事では、WindowsでPowerShellとAHKを連携させて、日付や数字の形式を自動変換する方法を解説します。F6を押すだけでクリップボードのテキストを簡単変換できるスクリプト構築術を習得して、日々の事務作業を効率化しましょう。
AutoHotKey(AHK)とPowerShellを組み合わせることで、単純な文字列の置き換えから複雑なデータ変換まで、Windows環境での作業効率を飛躍的に向上させることが可能です。
AHKはキーボードやマウス操作を自動化するツールとして知られていますが、PowerShellのスクリプト実行能力と組み合わせることで、その可能性は無限に広がります。
毎日、日付や数字の入力形式がバラバラで困っているんだよね…
PowerShellとAHKがあれば、もう手作業での修正は不要になりますよ!
F6キーを押すだけで、入力した日付や数字が自動で変換されたら、すごく楽になるのに…
AHKのホットキー機能を使えば、それが実現できます!
AHKのスクリプトに、PowerShellの変換スクリプトを連携させることで、特定のキー(例えばF6キー)を押すだけで、クリップボードにあるテキストを自動的に変換し、指定された形式で貼り付けることが可能です。
この一連の動作をわずか数秒で実行できるため、手作業による変換と比較して大幅な時間短縮につながります。
この見出しのポイント
AHKとPowerShellを連携させることで、クリップボードにコピーしたテキストをF6キー一発で日付や数字に変換する環境が構築できます。
実際に、私もこの連携環境を構築して、日々の作業効率が格段に向上したのを実感しています。
AutoHotkey(AHK)は、Windowsでの作業を自動化するためのスクリプト言語です。
キーボードやマウス操作を自動化したり、テキストの置換、アプリケーションの起動など、さまざまなタスクをスクリプトで記述できます。
ここでは、AHKをまだインストールしていない方のために、導入手順を丁寧に解説していきます。
AHKって何?
AHKは、あなたのPC作業を楽にする魔法の杖です!
まずは、AutoHotkey公式サイトからインストーラーをダウンロードしましょう。
実際に公式サイトにアクセスすると、最新バージョンのインストーラーがすぐにダウンロードできるはずです。
AutoHotkey公式サイトでは複数のバージョンが提供されていますが、基本的には最新版を選んで問題ありません。もし過去のバージョンが必要な場合は、ダウンロードページでアーカイブを探してみてください。
ダウンロードしたインストーラーを実行すると、インストールが開始されます。
基本的に表示される指示に従って進めば問題ありませんが、インストール先や関連オプションの設定は、ご自身の環境に合わせて選択してください。
項目 | 説明 |
---|---|
インストール先 | デフォルトの場所で問題ないが、変更する場合はアクセスしやすい場所を選択する |
オプション | 関連ファイルとの関連付けや、スタートメニューへの登録など、必要に応じて選択 |
AHKにはいくつかのバージョンがありますが、「Unicode 64-bit」版を選ぶことをおすすめします。
Unicode版は、多言語の文字を扱う際に文字化けのリスクが低く、64bit版はより多くのメモリを使用できるため、大規模なスクリプトでも安定して動作するからです。
PowerShellは、マイクロソフトが開発したタスク自動化と構成管理のためのクロスプラットフォームの自動化ツールです。
コマンドラインシェル、スクリプト言語、構成管理フレームワークで構成されています。
ここでは、PowerShellの基本的な知識と、スクリプトの実行許可設定について解説します。
PowerShellって難しそう…
大丈夫!基本を抑えれば、意外と簡単なんです!
PowerShellは、Windowsに標準搭載されているコマンドラインツールで、ファイル操作やシステム管理など、さまざまな操作を自動化できます。
コマンドレットと呼ばれる専用のコマンドを使用することで、複雑な処理も簡単に記述できます。
実際にPowerShellを使ってみると、GUIでは手間のかかる作業も、数行のコマンドで実行できることに驚かされます。
PowerShellの主な特徴は以下の通りです。
項目 | 説明 |
---|---|
コマンドレット | 特定のタスクを実行するための専用コマンド |
スクリプト言語 | 複数のコマンドレットを組み合わせて、複雑な処理を自動化可能 |
拡張性 | モジュールを追加することで、機能を拡張できる |
それでは実際に私が使っているコードをのせておきます
convert_clipboard.ps1
Add-Type -TypeDefinition @"
using System;
using System.Globalization;
public class DateUtils {
public static string GetDayOfWeek(string dateStr, string format) {
DateTime dateObj;
if (DateTime.TryParseExact(dateStr, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateObj)) {
return $"{dateObj.Month}/{dateObj.Day} ({dateObj.ToString("ddd")})";
}
return dateStr;
}
}
"@
# クリップボードの値を取得
$inputText = Get-Clipboard
function Convert-Input {
param ($text)
# 金額変換(例: 10000\\ → \10,000-)
if ($text -match '^\d+\\\\$') {
$num = $text -replace '\\\\$', ''
return "\{0:N0}-" -f [int]$num
}
# 日付(YYYYMMDD/// → YYYY/M/D (曜日))
if ($text -match '^\d{8}///$') {
$datePart = $text.Substring(0, 8)
$dateObj = [datetime]::ParseExact($datePart, "yyyyMMdd", $null)
return "$($dateObj.Year)/$($dateObj.Month)/$($dateObj.Day) ($($dateObj.ToString('ddd')))"
}
# 日付(MMDD/// → M/D (曜日))
if ($text -match '^\d{4}///$') {
$year = (Get-Date).Year
$month = $text.Substring(0,2).TrimStart('0')
$day = $text.Substring(2,2).TrimStart('0')
$dateObj = Get-Date "$year/$month/$day"
return "$month/$day ($($dateObj.ToString('ddd')))"
}
# 日付(YYYYMMDD// → YYYY/M/D)
if ($text -match '^\d{8}//$') {
$year = $text.Substring(0, 4)
$month = $text.Substring(4, 2).TrimStart('0')
$day = $text.Substring(6, 2).TrimStart('0')
return "$year/$month/$day"
}
# 日付(MMDD// → M/D)
if ($text -match '^\d{4}//$') {
$month = $text.Substring(0, 2).TrimStart('0')
$day = $text.Substring(2, 2).TrimStart('0')
return "$month/$day"
}
return $text # 変換対象外ならそのまま返す
}
# 変換してクリップボードにセット
$result = Convert-Input $inputText
Set-Clipboard -Value $result
# 変換結果を表示
Write-Output $result
clipboard_convert.ahk
F6::
Send, ^+{Left} ; Ctrl + Shift + ← で単語を選択
Send, ^+{Left} ; Ctrl + Shift + ← で単語を選択
Sleep, 100 ; 100ミリ秒待つ(コピーが確実に完了するように)
Send, ^c ; Ctrl+C を送信(コピー)
Sleep, 100 ; 100ミリ秒待つ(コピーが確実に完了するように)
RunWait, powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -File "保存先のパス\convert_clipboard.ps1", , Hide
Sleep, 300 ; PowerShell の処理が完了するのを少し待つ
Send, ^v ; Ctrl+V を送信(貼り付け)
return
このコードを作成して、clipboard_convert.ahkを実行しておくと、F6キーを押すと次のように変換されます
20250305//➡2025/3/5
0305//➡3/5
20250305///➡2025/3/5(水)
0305///➡3/5(水)
1000\\➡\1,000-
AHKの公式サイトからインストーラーをダウンロードできます。ダウンロードページから最新版を選び、インストーラーの指示に従って進めると、インストールできます。インストール時に「Unicode 64-bit」版を選択するのがおすすめです。多言語の文字化けを防ぎ、より安定して動作します。
PowerShellの実行ポリシーを変更するには、管理者権限でPowerShellを起動し、Set-ExecutionPolicyコマンドレットを使用します。ただし、セキュリティ上のリスクを考慮し、信頼できるスクリプトのみを実行するように心がけてください。実行ポリシーの設定を変更することで、自作のスクリプトや信頼できる提供元から提供されたスクリプトを実行できます。
AHKスクリプトで定義したホットキー(F6)が、他のアプリケーションと競合している可能性があります。また、PowerShellスクリプトのパスが間違っている場合も同様の症状が発生することがあります。AHKスクリプトを右クリックし、「スクリプトの再読み込み」を試してください。
正規表現は、パターンが少し違うだけでもうまく一致しないことがあります。正規表現チェッカーなどのツールを利用して、パターンが意図したとおりに動作するか確認してみましょう。正規表現は文字列操作において、とても役に立つツールです。
スクリプトを修正する際は、必ずバックアップを取ってから変更するようにしてください。変更内容を記録しておくと、問題が発生した場合に元の状態に戻しやすくなります。また、修正後は必ずテストを行い、意図したとおりに動作するかを確認しましょう。
Microsoft Learnでは、PowerShellの基礎から応用まで幅広いトピックを学ぶことができます。AutoHotkey公式サイトでは、AHKの基本操作やスクリプト構文、応用例が紹介されています。これらのリソースを活用することで、AHKとPowerShellの連携について、さらに知識を深めることが可能です。
この記事では、Windows環境でPowerShellとAHKを連携させ、F6キー一発で日付や数字の形式を自動変換する方法を解説しました。
いつものことながら、@DTP_TransitさんのKeybordMaestro術・時短術には脱帽です!@DTP_Transitさんのnoteのおかげで、いろんな作業が時短・効率化されています。感謝感激です!
手作業での変換から解放され、事務作業の効率化、人的ミスの削減に繋がるスクリプト構築術をぜひ習得してください。
この記事のポイント
この記事を参考にAHKとPowerShellを連携させて、日々の自動化をより快適にしましょう。