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さん、今回は非常に面白いアイデアを共有いただき、ありがとうございました。

 
  






















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