Hiro( @mofumofu_dance )さんがVBAとPower Automate連携という、面白いことをされていました!
これは楽しそう!試すしかない!
というわけで、さっそくやってみました。
HTTP要求で受け取った文字列をツイートするPower Automateフロー
まずはPower Automateのフローです。
- 自動化したクラウド フローで「HTTP 要求の受信時」をトリガーにします。
- methodは「POST」、文字列さえ受け取れれば良いので「要求本文の JSON スキーマ」は下記のような形にしておきます。
- 新しいステップから「作成」を追加し、手順2.で設定した「message」を入力値とします。
- 新しいステップから「ツイートの投稿」を追加し、「ツイート テキスト」を手順3.の値を指定します。
- フローを保存すると、「HTTP 要求の受信時」にURLが表示されるので、メモ帳等にコピーしておきます。
1 2 3 4 5 6 7 8 | { "type" : "object" , "properties" : { "message" : { "type" : "string" } } } |
Power AutomateのURLにPOSTするマクロ
次はマクロのコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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さん、今回は非常に面白いアイデアを共有いただき、ありがとうございました。
この記事へのコメントはありません。