Hiro( @mofumofu_dance )さんがVBAとPower Automate連携という、面白いことをされていました!
これは楽しそう!試すしかない!
というわけで、さっそくやってみました。
HTTP要求で受け取った文字列をツイートするPower Automateフロー
まずはPower Automateのフローです。
- 自動化したクラウド フローで「HTTP 要求の受信時」をトリガーにします。
- methodは「POST」、文字列さえ受け取れれば良いので「要求本文の JSON スキーマ」は下記のような形にしておきます。
- 新しいステップから「作成」を追加し、手順2.で設定した「message」を入力値とします。
- 新しいステップから「ツイートの投稿」を追加し、「ツイート テキスト」を手順3.の値を指定します。
- フローを保存すると、「HTTP 要求の受信時」にURLが表示されるので、メモ帳等にコピーしておきます。
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Power AutomateのURLにPOSTするマクロ
次はマクロのコードです。
Option Explicit
Public Sub Sample()
PostPowerAutomate _
"こんにちは。" & vbCrLf & _
"Power Automateからの投稿テストです。"
End Sub
Private Sub PostPowerAutomate(ByVal message As String)
Dim dat As Variant
Const url As String = "(Power Automateのフロー作成時に取得したURL)"
message = Replace(message, """", "\""")
dat = "{""message"":""" & message & """}"
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "POST", url, False
.setRequestHeader "Content-Type", "application/json"
.send dat
Select Case .Status
Case 200, 202: Debug.Print "done."
Case Else: Debug.Print .Status, .responseText
End Select
End With
End Sub
指定したURLにJSON形式のパラメーターをPOSTするだけの単純なコードです。
注意点として、リクエストヘッダーに「Content-Type: application/json」を含める必要があります。
上記マクロの結果は下記の通りで、意図したとおりにツイートできました。
VBAからPower Automateを叩いてツイート。
結果は↓の通りです。@mofumofu_dance さん、これはお手軽で良いですね! https://t.co/mMIIWVrWT7 pic.twitter.com/Z6d8xoFsel— きぬあさ (@kinuasa) January 14, 2021
VBAからTwitter等のAPIを叩く際は、特に認証周りの実装が面倒くさいのですが、Power Automateを介することで簡潔に処理できます。
(使わないときはフローをオフにしておく。)
唯一惜しいのは「HTTP 要求の受信時」がプレミアムコネクタであることでしょうか。
とはいえ、VBAからPower Automate経由で各種APIを呼び出すのは活用場面も広いと思いますので、プレミアムコネクタが使える環境にある方は、是非一度お試しください!
Hiroさん、今回は非常に面白いアイデアを共有いただき、ありがとうございました。




















この記事へのコメントはありません。