マクロ機能が搭載される周辺機器をコレクトしはじめた筆者は、早速Web巡回フローを実行するPowerShellファイル(PS1ファイル)をマクロキーに割り当てたいと思った。筆者のキーボードマクロにはファイルの実行を簡単に行えそうな機能が搭載されていなかったのだがエレコムの大型トラックボールマウスには、これが備わっていた。割り当て可能なボタンは8つ、ホイールの4つを入れると12という充実したマクロ機能を持つ。プロフィール機能やジェスチャー割り付け可能な上、お目当ての「ファイルを指定して実行機能」が搭載されている。スクリプトファイルを割り当てるとさらに自由度が高まる。
スクリプトをマウスボタンに割り当てる
以前作成したPowerAutomateでのWeb巡回を自動化するためのスクリプトのループを外し、
$data = Get-Date
Write-Output $data
Start-Process -FilePath "ms-powerautomate://"
# System.Windows.Forms名前空間の読み込み
Add-Type -AssemblyName System.Windows.Forms
# 10秒スリープ
Start-Sleep 10
# キー操作で「Alt+A」と入力する
[Windows.Forms.SendKeys]::SendWait("%{a}")
設定画面からトラックボール左に位置するボタンに設定すると、その都度巡回するという仕様になる。同様にGitHub APIとPersonal access tokens (classic)が必要になるがGitHubのスター1000個以上のリポジトリの更新を200取得するPS1ファイルを作成し、
$token = "ghp_●●●●●●●●●●●●";
$apiUrl = "https://api.github.com/search/repositories?q=stars:>=1000&sort=updated&order=desc&per_page=200";
$response = Invoke-WebRequest -Uri $apiUrl -Headers @{ Authorization = "token $token"; "User-Agent" = "PowerShell" } -Method GET;
$data = $response.Content | ConvertFrom-Json;
# 結果を表示
foreach ($item in $data.items) {
Write-Host "リポジトリ名: $($item.full_name)"
Write-Host "スター: $($item.stargazers_count)"
Write-Host "作成日: $($item.created_at)"
Write-Host "説明: $($item.description)"
Write-Host "主な使用言語・技術: $($item.language)"
Write-Host "URL: $($item.html_url)"
$commitsResponse = Invoke-WebRequest -Uri "https://api.github.com/repos/$($item.full_name)/commits" -Headers @{ Authorization = "token $token"; "User-Agent" = "PowerShell" } -Method GET
$commitsData = $commitsResponse.Content | ConvertFrom-Json
Write-Host "Updated at: $($commitsData[0].commit.committer.date)"
Write-Host "--------------------"
};
Read-Host "Enterを押して終了";
隣にあるボタン7に設定するとPS1ファイルによる巡回系セットでまとめられる。
ほかにもAPIで取得できるものは、たくさんあるので小っちゃなスニペットをたくさん作っておいてボタンに割り当てていくのも楽しそうだ。