質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Q&A

0回答

804閲覧

ExcelVBAからGoogleChatへ投稿する

greentea

総合スコア1

Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

0グッド

0クリップ

投稿2022/10/26 03:14

前提

元々Excel⇒Chatworkにグループに投稿するVBAを作成・運用していたが、今度はExcelVBAにて、Excelの特定のセルの内容をGoogleチャットのスペースに投稿できるようにしたい。
そのためのロジックを記載したものの、VBAのコンパイルは通るが、通信が恐らくできずGoogleチャットに投稿されないため、どこが原因でどうすれば解消されるかを知りたい。
※Excel⇒Chatworkに投稿は出来ていたので、そのノリで出来ると思ったのが間違いだった…。

Excelバージョン:Excel2013

実現したいこと

ExcelVBAにて、Excelの特定のセルの内容をGoogleチャットのスペースに投稿できるようにしたい。

発生している問題・エラーメッセージ

エラーというエラーが出ていないが、恐らく通信が失敗している…?

該当のソースコード

'プログラム0|変数設定の指定 Option Explicit 'プログラム1|プログラム開始 Sub ChatWorkにメッセージを投稿() 'プログラム2|シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("通知用") 'プログラム3|Googleチャットのwebhook Dim url As String url = "https://chat.googleapis.com/hogehoge" 'Googleチャットのスペースwebhook 'プログラム4|APIトークンを設定(Googleチャットでは使わない?) 'Dim apitoken As String: apitoken = ws.Range("B7").Value 'プログラム5|Chatworkメッセージを取得 Dim title As String: title = Replace(ws.Range("B8").Value, "{日付}", Format(Date, "yyyy-mm-dd")) Dim message0 As String: message0 = ws.Range("B5").Value Dim message1 As String: message1 = Replace(ws.Range("B9").Value, "{日付}", Format(Date, "yyyy-mm-dd")) Dim message2 As String: message2 = Replace(ws.Range("B10 ").Value, "{日付}", Format(Date, "yyyy-mm-dd")) Dim message3 As String: message3 = Replace(ws.Range("B11 ").Value, "{日付}", Format(Date, "yyyy-mm-dd")) Dim message4 As String: message4 = ws.Range("B12 ").Value Dim message5 As String: message5 = ws.Range("B13").Value Dim message6 As String: message6 = ws.Range("B14").Value Dim message7 As String: message7 = ws.Range("B15").Value Dim message8 As String: message8 = ws.Range("B16").Value Dim message9 As String: message9 = ws.Range("B17").Value Dim message10 As String: message10 = ws.Range("B18").Value Dim message11 As String: message11 = ws.Range("B19").Value Dim message12 As String: message12 = ws.Range("B20").Value Dim text As String: text = "[info][title]" & title & "[/title]" & "【▼▼】" & message0 & vbCrLf & "【○○日】" & message1 & vbCrLf & "【○○日】" & message2 & vbCrLf & "【○○日】" & message3 & vbCrLf & "【○○】" & message4 & vbCrLf & "【○○1】" & message5 & vbCrLf & "【○○2】" & message6 & vbCrLf & "【○○3】" & message7 & vbCrLf & "【○○4】" & message8 & vbCrLf & "【○○5】" & message9 & vbCrLf & "【○○6】" & message10 & vbCrLf & "【○○】" & message11 & vbCrLf & "【○○】" & message12 & vbCrLf & "[/info]" 'プログラム6|POSTするメッセージを設定 Dim param As String param = "body=" & text 'プログラム7|GoogleチャットにデータをPOSTする Dim objHTTP As XMLHTTP60 Set objHTTP = New XMLHTTP60 With objHTTP .Open "POST", url .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '.setRequestHeader "X-ChatWorkToken", apitoken 'googleチャットにしたから要らないはず .send (param) End With 'プログラム8|通知の状況を出力 If InStr(objHTTP.responseText, "message_id") > 0 Then ws.Range("F15").Value = "通知成功" Else ws.Range("F15").Value = "通知失敗" End If 'ws.Range("F15").Value = objHTTP.responseText 'プログラム9|オブジェクト解放 Set objHTTP = Nothing 'プログラム10|プログラム終了 End Sub

試したこと

元はExcel⇒Chatwork用のVBAだったので、以下箇所を修正。
・APIトークン部分はGoogleチャットのwebhookに。
・ChatworkのroomidはGoogleチャットでは不要かと思い、コメント化。
・「'プログラム7|GoogleチャットにデータをPOSTする」部分の
「.setRequestHeader」でChatworkのトークン部分についても不要かと考え、コメント化。

尚、「'プログラム8|通知の状況を出力」部分のロジックで、
セルに通信状態を表示するようにしているが、「通信失敗」となる。

補足情報(FW/ツールのバージョンなど)

そもそもPOSTのロジックに関する記事や、
ましてGoogleチャットへExcelVBAから連携する記事が圧倒的に少なく、
プログラミングやVBA初心者には手詰まり状態です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問