** やりたい事 **
ExcelのVBAで抽出した値をTeamsの任意のチーム内に自動でメッセージ送信したいと思います。
VBAで目的の値を出すところまではできたのですが、それをTeamsで送信する方法が分かりません。
** 試したこと **
何分初めてのことなのでもしかしたら見当はずれな事をしているかもしれませんが、下記のようなコードを試してみました。
また、
https://docs.microsoft.com/ja-jp/graph/api/channel-post-messages?view=graph-rest-1.0&tabs=http
を参考にしました。
ちなみに、検証に使用しているPCではTeamsのアプリをインストール済みです。
●.htmlファイルで下記のコードを記載してファイルを実行する。
html
1<html lang="ja"> 2<head> 3<title>test</title> 4 5<SCRIPT LANGUAGE="JavaScript"> 6<!-- 7 8//--> 9</SCRIPT> 10 11</head> 12<body bgcolor="#FFFFF0"> 13 14<noscript>Javaを有効にしてください<BR>ActivXコントロール有効化ボタンが出ている場合は[ブロックされているコンテンツを許可]をクリックしてください。<BR></noscript> 15 16<script type="text/javascript"> 17<!-- 18 19const options = { 20 authProvider, 21}; 22 23const client = Client.init(options); 24 25const chatMessage = { 26 body: { 27 contentType: "html", 28 content: "Here's the latest budget. <attachment id=¥"153fa47d-18c9-4179-be08-9879815a9f90¥"></attachment>" 29 }, 30 attachments: [ 31 { 32 id: "153fa47d-18c9-4179-be08-9879815a9f90", 33 contentType: "reference", 34 contentUrl: "https://m365x987948.sharepoint.com/sites/test/Shared%20Documents/General/test%20doc.docx", 35 name: "Budget.docx" 36 } 37 ] 38}; 39 40let res = await client.api('/teams/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/channels/YY:YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY@thread.skype/messages') 41 .post(chatMessage); 42 43--> 44</script> 45 46 47</body> 48</html>
結果、Internet Explorer 11だと下記のエラー
SCRIPT1003: ':' がありません。 postTeams.html (19,34)
Google Chromeだと下記のエラーが出ました。
Uncaught SyntaxError: await is only valid in async function postTeams.mthl:40
エラーメッセージはそれぞれ「開発者ツール」の「コンソール」で確認したものです。
●JScript(.jsファイル)で作成した場合
javascript
1const options = { 2 authProvider, 3}; 4 5const client = Client.init(options); 6 7const chatMessage = { 8 body: { 9 contentType: "html", 10 content: "Here's the latest budget. <attachment id=¥"153fa47d-18c9-4179-be08-9879815a9f90¥"></attachment>" 11 }, 12 attachments: [ 13 { 14 id: "153fa47d-18c9-4179-be08-9879815a9f90", 15 contentType: "reference", 16 contentUrl: "https://m365x987948.sharepoint.com/sites/test/Shared%20Documents/General/test%20doc.docx", 17 name: "Budget.docx" 18 } 19 ] 20}; 21 22let res = await client.api('/teams/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/channels/YY:YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY@thread.skype/messages') 23 .post(chatMessage);
実行時、下記のエラーが表示されました。
行: 1 文字: 1 エラー: 構文エラーです。 コード: 800A03EA ソース: MicrosoftJScriptコンパイルエラー
●Excel(.xlsm)内のVBAに直接記載した場合
VBA
1Sub POST() 2 Dim req As Object 3 Dim dat As Variant 4 5 Set req = Nothing '初期化 6 Set req = CreateObject("Msxml2.XMLHTTP") 'CreateHttpRequest() 7 8 req.Open "POST", "https://graph.microsoft.com/v1.0/teams/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/channels/YY:YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY@thread.skype/messages", False 9 10 dat = "Content-type: application/json" & _ 11 "{ ""body"": { ""content"": ""Hello World"" }}" 12 13 req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 14 req.Send dat 15 16 Debug.Print "Status:" & req.Status 17 Debug.Print "responseText:" & req.responseText 18 19End Sub
「イミディエイト」ウィンドウに出力された結果。
Status:401 responseText:{ "error": { "code": "InvalidAuthenticationToken", "message": "Access token is empty.", "innerError": { "date": "2020-07-09T05:13:00", "request-id": "ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ" } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/16 05:51
2020/07/16 05:58 編集