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

XOOPSとWordPressが同居しているDBでWP側のデータをいじりたいとき。

かたやEUC、かたやunicodeなので、なかなか思ったようにいかず、しばらく試行錯誤。 苦労した結果、以下の手順でやればうまくいきそうなので、覚え書き。 ■PhpMyAdminで既存DBからエクスポ …

no image

Pythonでpipを実行してpyautoguiをインストールしてみた

以下のブログにあることをやってみたくて、 (python3.6)pyAutoGuiでアプリを操作するプログラムを作ってみた – 楽するプログラマ 以下のような、おまじないで。 C:\Use …

no image

AppActivate Me.Caption

AppActivate Me.Caption これがわかるまで何時間かかった事やら。 おかげで知恵熱がでちゃったよ。 (ユーザーフォームから呼び出したダイアログを閉じたあとフォームにフォーカスが戻らな …

no image

プラスアルファレンタルサーバでxoops

インストールできることを確認。 ほっ。 関連投稿: 迷惑メール joomla 甘さ? PhotoshopElementsでWebデザイナーが作ったようなキレイなボタンを作るには

no image

Fold Page List と Fold Category List

今度仕事でWordPressを使うのでいろいろ調べている。 WordPressはデフォルトで親メニューも子メニューも出っ放し。 けど、メインメニューだけ出していてクリックしたときだけサブメニューを出し …