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さん、今回は非常に面白いアイデアを共有いただき、ありがとうございました。
この記事へのコメントはありません。