1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2024-08-20

概要

PowerAutomateを介してAPIを使用し、Chatworkの任意のルームにPDFファイルを自動送信するアクションを作成しました。

APIを用いてメッセージのみのPOSTに関しては既に別記事で紹介されていましたが、ファイル送信を行おうとした際、躓いたのでここに共有します。

(Chatwork関連の文献が少ないということと、自分自身PowerShellの経験が少なく、自分用というのも兼ねて記事に起こしてみた次第です)

手順

フロー内に"PowerShell スクリプトを実行"アクションを用意し、以下のコードを貼り付けます。

# ファイルパスを指定
$filePath = "C:\Users\sample\sample.pdf" 


# メッセージを指定
$message =  "ファイルがアップロードされました。" 
#メッセージは必要に合わせて変更してください

# API URLを指定
$url = "https://api.chatwork.com/v2/rooms/00000000/files"  # 00000000の部分を実際のルームIDに置き換える

# ヘッダーの設定
$headers = @{
    "X-ChatWorkToken" = "ChatWorkToken"  # 実際のトークンに置き換える
    "Accept" = "application/json"
}

# フォームデータ作成
$boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"

# ファイルのバイナリデータを読み込み
$fileBytes = [System.IO.File]::ReadAllBytes($filePath)
$fileContent = [System.Text.Encoding]::GetEncoding("iso-8859-1").GetString($fileBytes)


# 日本語メッセージのUTF-8エンコード
$messageBytes = [System.Text.Encoding]::UTF8.GetBytes($message)
$messageContent = [System.Text.Encoding]::GetEncoding("iso-8859-1").GetString($messageBytes)

# 日本語ファイル名のUTF-8エンコード
$fileName = [System.IO.Path]::GetFileName($filePath)
$fileNameEncoded = [System.Text.Encoding]::UTF8.GetBytes($fileName)
$fileNameUtf8 = [System.Text.Encoding]::GetEncoding("iso-8859-1").GetString($fileNameEncoded)

$formData = @"
--$boundary
Content-Disposition: form-data; name="message"

$messageContent

--$boundary
Content-Disposition: form-data; name="file"; filename*="utf-8''$fileNameUtf8"
Content-Type: application/pdf

$fileContent

--$boundary--
"@

# HTTPリクエストの送信
$response = Invoke-RestMethod -Uri $url -Method Post -Headers $headers -Body $formData -ContentType "multipart/form-data; boundary=$boundary"

# レスポンスの出力
$response | ConvertTo-Json

躓いた点

  • ヘッダーの境界は2本のダッシュで始まり、最後の境界には最後にも2本のダッシュが入る

  • 改行を余分に挟むと上手く送信できない

  • 日本語を扱うときは適切にエンコードを行うこと

お役に立てたら幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?