PowerShell で Redmine のチケットNoのフォルダを作成して配下に URLショートカット と PDF を作成するv4

kameyatakefumi.hatenablog.com

以前、作成したスクリプトを定期的に改良しており、気が向いたので記事にする。
v1→v4となる。

前提条件

  • Windows 10 Professional
  • $PSVersionTable PSVersion=5.1.18362.1171
  • ファイルを選択し右クリック → PowerShell で実行
  • チケットNo.は # を含む(#99999)
  • RedmineAPIアクセスキーは環境変数 RedmineApiAccessKey に記載

create_redmine_folder_v4.ps1

# Get Ticket Number
$ticketNo = Get-Clipboard -Format Text
if (($null -eq $ticketNo) -or (0 -ne $ticketNo.IndexOf("#"))) {
    $ticketNo = Read-Host "Please enter a Redmine ticket number"
}

$ticketId = $ticketNo.remove(0, 1)
$ticketUrl = "http://redmine.es.occ.co.jp/issues/$ticketId"
$apiAccessKey = $env:RedmineApiAccessKey

# Get Response
$response = Invoke-RestMethod -Uri "$ticketUrl.json?key=$apiAccessKey"
$ticketFolder = "$PSScriptRoot\$ticketNo $($response.issue.subject)"

# Create Folder
New-Item $ticketFolder -ItemType Directory -Force

# Create File
New-Item "$ticketFolder\description.txt" -ItemType File -Value $response.issue.description -Force
New-Item "$ticketFolder\comment.txt" -ItemType File -Force

# Create Shortcut
$wShell = New-Object -ComObject WScript.Shell
$shortcut = $wShell.CreateShortcut("$ticketFolder\$ticketNo.url")
$shortcut.TargetPath = ($ticketUrl)
$shortcut.Save()

# Create PDF
(New-Object System.Net.WebClient).Downloadfile(
    "$ticketUrl.pdf?key=$apiAccessKey", 
    "$ticketFolder\$ticketNo.pdf")