IT仕事 PowerAutomate

PADからChatworkに画像ファイルを添付で送る

投稿日:2026年6月2日 更新日:

PADで、画像を添付ファイルでチャットワークに送る方法を調べたけど、見つからなかった。
代わりにPDFを送る方法は見つかったが、そのままのやり方ではうまくいかなかった。pdfとjpgで扱いが変わるのかな?

【Power Automate Desktop】ChatworkにPDFを自動アップロードする #PowerShell – Qiita

ChatGPTに相談したら、最初はフローで「テキストをバイナリに変換」しろだの、「バイナリを Base64 に変換する」だの、いろいろ注文されてその通りにフロー作成したが、うまくいかなかった。
だが最終的に、PADの「Webサービスを呼び出します」アクションを諦め、「PowerShell スクリプトの実行」アクションを使って、確実にJPGをそのまま無傷でチャットワークに送り届ける方法に変えましょう、となって、うまくいった。

以下を「PowerShell スクリプトの実行」アクションにコピペして必要箇所を書き換えるだけでOKと思うよ。

# --- 設定エリア(ここをご自身の環境に書き換えてください) ---
$token = "【あなたのAPIトークン】"
$roomId = "【あなたのルームID】"
$filePath = "【JPGファイルのフルパス(例 C:\Folder\image.jpg)】"
$message = "画像を添付します。"
# --------------------------------------------------------

# 送信処理(ここは書き換え不要です)
$URL = "https://api.chatwork.com/v2/rooms/$roomId/files"
$fileBytes = [System.IO.File]::ReadAllBytes($filePath)
$fileName = [System.IO.Path]::GetFileName($filePath)
$LF = "`n"
$boundary = [System.Guid]::NewGuid().ToString()

$bodyLines = (
    "--$boundary",
    "Content-Disposition: form-data; name=`"message`"",
    "",
    $message,
    "--$boundary",
    "Content-Disposition: form-data; name=`"file`"; filename=`"$fileName`"",
    "Content-Type: image/jpeg",
    ""
) -join $LF

$headerBytes = [System.Text.Encoding]::UTF8.GetBytes($bodyLines + $LF)
$footerBytes = [System.Text.Encoding]::UTF8.GetBytes($LF + "--$boundary--" + $LF)

$requestStream = [System.IO.MemoryStream]::new()
$requestStream.Write($headerBytes, 0, $headerBytes.Length)
$requestStream.Write($fileBytes, 0, $fileBytes.Length)
$requestStream.Write($footerBytes, 0, $footerBytes.Length)
$bodyBytes = $requestStream.ToArray()

$headers = @{
    "X-ChatworkToken" = $token
    "Content-Type"    = "multipart/form-data; boundary=$boundary"
}

Invoke-RestMethod -Uri $URL -Method Post -Headers $headers -Body $bodyBytes

追記:元画像が重たかったので、圧縮処理も追加した。以下がコード。

Add-Type -AssemblyName System.Drawing

# 画像の読み込み
$srcImg = [System.Drawing.Image]::FromFile("%FilePath%")

# 新しいサイズを計算(縦横比を維持)
$newWidth = 1024
$newHeight = [int]($srcImg.Height * $newWidth / $srcImg.Width)

# リサイズ処理
$bmp = New-Object System.Drawing.Bitmap($newWidth, $newHeight)
$graph = [System.Drawing.Graphics]::FromImage($bmp)

# 画質の設定(きれいに縮小するための処理)
$graph.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic

# 描画
$graph.DrawImage($srcImg, 0, 0, $newWidth, $newHeight)

# 保存してメモリ解放
$bmp.Save("%DstFilePath%")
$graph.Dispose()
$bmp.Dispose()
$srcImg.Dispose()

-IT仕事, PowerAutomate

執筆者:

関連記事

no image

禁止リスト@差出人

Spam Mail Killerを使っている。 窓の杜 – Spam Mail Killer http://www.forest.impress.co.jp/lib/inet/mail/a …

no image

IP電話

呉西のケーブルテレビ会社にIP電話を申し込んだら、 「トラブルが多いから内規で設置申し込みを受け付けないようにしている。公表してないが」 と、そこの営業さん。 ここ、市が運営してるところじゃなかったっ …

no image

セキュアド合格!!

昨日、秋に受験した情報セキュリティアドミニストレータの合格証書が届いた。 ウレシー!! だって落ちに落ちて、3度目の正直だもん。 年に1度しかない試験だもん。 今度落ちたらもう受験するのやめようかと思 …

PhotoshopElementsで写真の角を丸くする その2

込み入った写真の場合、境界線がはっきりせず、上記の方法が使えなかった・・・以下、別のやり方。   1.シェイプツールの角丸長方形で写真の上にシェイプのレイヤーを作る。このとき描画色は写真に含まれない色 …

no image

経営者研修会講師仕事

銀行さん、思考スピードが速い。 考えに淀みが無い。 理解力も分析力も的確で合理的。 テキストを熟読して臨んだ、しかも2年以上経験のある自分が、議論中に引き離されそうになった・・・それでもしかし、なんと …