VBA google chatのWebhookを使ってチャットにメッセージを送信する

  • 作成日 2024.03.18
  • vba
VBA google chatのWebhookを使ってチャットにメッセージを送信する

VBAで、google chatの「Webhook」を使ってgoogle chatにメッセージを送信するコードを記述してます。簡単に実装できます。

環境

  • OS windows11 64bit
  • EXCEL 2021

サンプルコード

まずはchat側で「webhook」のアドレスを取得します。「アプリとの統合」から

右下にある「+ Webhookを追加」をクリックします。

適当な名前をつけると「Webhook」用のURLが生成されます。

あとは、以下のコードのように生成したURLを使用してVBAで、「WinHttp.WinHttpReques」を使って、リクエスト作成するだけで通知が送れます。

Sub SendChatMessage(msg As String)

    Dim url As String
    Dim request As Object
    
    ' Google ChatのWebhook URLを設定
    url = "https://chat.googleapis.com/v1/spaces/xxxxxxxxxxxxxxxxxx"
    
    ' 送信するメッセージを設定
    Dim message As String
    message = "{""text"": """ & msg & """}"
    
    ' HTTPリクエストを作成
    Set request = CreateObject("WinHttp.WinHttpRequest.5.1")
    request.Open "POST", url, False
    request.setRequestHeader "Content-Type", "application/json"
    
    ' メッセージを送信
    request.send message
    
End Sub

まず、SendChatMessage関数に送信するメッセージを文字列として渡します。次に、Google ChatWebhook URLを設定します。この URLは、Google Chat APIにアクセスするためのエンドポイントです。

次に、送信するメッセージを適切な JSON 形式に変換します。Google Chat API は、メッセージを JSON 形式で受け取るため、この変換が必要になります。

その後、WinHttpRequestオブジェクトを作成し、POST リクエストを準備します。リクエストヘッダーにContent-Typeを設定し、JSON データを送信できるようにしておきます。

最後に、request.sendメソッドを使って、実際にメッセージを送信しています。

このコードを実行すると、指定したGoogle Chatの空間にメッセージが投稿されます。この関数を利用すれば、VBAコードからGoogle Chatに簡単にメッセージを送信できます。例えば、スプレッドシートのデータが更新されたときにメッセージを送信するなど、様々な用途で活用できます。