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

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

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

28082閲覧

Teamsに自動でメッセージを投稿する方法

ot2os

総合スコア23

VBA

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/09 05:28

** やりたい事 **

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" } } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

VBAのエラー内容だけみての回答となってしまいますが
ヘッダーにAuthorizationを追加して、アクセスキーを送ってあげる必要がありますが
入れていますでしょうか?

認証トークンの取得は下記サイトに記載されております
https://docs.microsoft.com/ja-jp/graph/auth/?context=graph%2Fapi%2F1.0&view=graph-rest-1.0

投稿2020/07/14 06:13

ka-bi-

総合スコア17

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

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

ot2os

2020/07/16 05:51

ありがとうございます。 頂いた情報をいろいろ読んでみましたが、どうやら「Azureポータル」とやらにサインインしてから環境を設定しないといけないようですね。 そして、試してみたところ「これに対するアクセス権がありません」表示でした。 おそらく、上に許可してもらわないと使えないようですね。 他にも方法が無いかと思い調べてみましたが、当方の環境だと上からの許可が下りていないのか、あるはずのメニューが無かったりとどれも使えないものばかりでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問