Power Automate for desktop から Teams のチャネルに投稿する 3 つの方法 (Version 2)

本記事は、Microsoft Power Automate Advent Calendar 2024 12月13日担当分の記事です。
この記事では、Power Automate for desktop  (デスクトップ フロー) から、Microsoft Teams のチャネルにメッセージを投稿する方法を記載します。

https://qiita.com/advent-calendar/2024/powerautomate

# はじめに
Power Automate for desktop から Teams のチャネルに投稿する方法については、いくつかの方法があります。私も以前に、その方法をまとめた記事を書きましたが、その後 PAD のアップデートで新たな方法が追加されたり、逆に Teams のセキュリティ強化や Microsoft 365 の更新により、利用が制限されたり非推奨となった方法もあります。

https://qiita.com/maekawawawa/items/76cc0e7754fdcdf8bd7c

今回は、これらのアップデートをもとに現時点で利用可能な方法についてまとめます。

# 目次
1.クラウドコネクタ (Teams コネクター) の利用
2. Power Automate の Teams Webhook の利用
3. チャネルのメールアドレスを利用

# 1.クラウドコネクタ (Teams コネクター) の利用 
Power Automate for desktop では、クラウドフローで利用可能なコネクターも利用可能になっています。その中で Teams のコネクターも利用できるように更新されています。
この方法は UI 操作だけで設定できること、また、クラウド フローを利用しているユーザーであれば使い慣れた方法でもあるので、利用しやすい方法なのではないかなと思います。

本方法は、Power Automate Premium ライセンスが必要なので、組織アカウントでもライセンスが無いユーザーや Microsoft アカウントをで利用しているユーザーでは、利用できないことを留意してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/642cef78-d13d-4b04-274e-7f67707bb97f.png)

この方法については、[のりじ](https://qiita.com/nori790822)さんが必要な設定含めて丁寧にまとめられているため、具体的な内容についてはリンクの記事をご参考ください。(のりじさん、リンクへの許諾ありがとうございます。)

https://qiita.com/nori790822/items/8e71a49b06a7aa4ddea8

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f4a1204c-1329-732f-6eb5-2e47c0218d33.png)


# 2. Power Automate の Teams Webhook の利用
クラウドフローのトリガーとして用意されている、Teams の受信用 Webhook に対してリクエストを送信して、投稿する方法が考えられます。こちらは Premium ライセンスは不要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/e616951e-9c14-e290-7ae8-a9bee2defb87.png)

従来、Teams の Incoming Webhook にリクエストを送信して投稿する方法 ([Link](https://qiita.com/maekawawawa/items/76cc0e7754fdcdf8bd7c#a-web-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%BE%E3%81%99-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8B%E3%82%89webhook-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E6%8A%95%E7%A8%BF))がありましたが、この方法は非推奨となり、2024年いっぱいで利用できなくなります。
後継として利用が推奨されているのが、この Power Automate を利用した方法となります。


### 手順１ クラウドフローの作成
構成の方法は、Power Automate (クラウドフロー) 上で、テンプレートから作成する方法と、Teams 上の Workflow アプリ (これも Power Automate) から作成する方法があります。


Teams 上で構成する方法は以下のサポート記事にまとめっています。

https://support.microsoft.com/ja-jp/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498


Power Automate 上で構成する場合は、以下のテンプレートを探して、テンプレートをもとに作成するだけです。

チームチャネルの場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/1ef3ec15-d0ce-a1d3-a3ba-baef9adba618.png)

チャットの場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/74a0b72e-82a5-18f5-77f9-c351fc836e69.png)


いずれの方法でもクラウドフローが作成される動作となり、作成したフローはクラウドフローの画面上から参照できます。
作成されたフローを開き、トリガーに設定された HTTP URL をメモ帳などに控えます。あとで利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/0308495c-d91d-5f40-86cd-96990575bb07.png)

チャネル (またはチャット) に投稿するアクションで、どのチームに対して投稿するか設定します。(Teams 上から構成している場合は、既に設定が入っている場合があります。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/4dbdc989-00ae-6a50-97be-aed6d93cf2dd.png)


### 手順2 Power Automate for desktop からの投稿
手順 1 で設定したフローに対して、Power Automate for desktop から [Web サービスを呼び出します] アクションを使ってリクエストを送信することでメッセージを投稿できます。

この時、投稿には各項目に以下の情報を指定します。
|No | プロパティ | 設定値 |
|:--|:--|:--|
|1 | URL: | 手順1 で取得した Webhook の URL ※注意点を後述します| 
|2 | メソッド:| POST |
|2 | 受け入れる:| application/json |
|2 | コンテンツ タイプ:| application/json |
|3 | 要求本文:| 欄外に記載 |
|4 | 要求本文をエンコードします:| False |

:::note info
 Webhook の URL については、パラメータ中に % 文字が含まれており、これが、PAD 上では変数として解釈されます。そのため、この文字はを別の文字に置き換えてあげる必要があります。
URL の &sp=以降に登場する %2F は / がエンコードされたものなので、これを / に置換した上で、アクションの URL : に指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/6735bb0a-49e8-dc6a-f6fa-d3121105ec27.png)
:::

```: 要求本文: に入力する内容
{
	"type": "message",
	"attachments": [
		{
			"contentType": "application/vnd.microsoft.card.adaptive",
			"contentUrl": null,
			"content": {
				"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
				"type": "AdaptiveCard",
				"version": "1.5",
				"body": [
					{
						"type": "TextBlock",
						"text": "Power Automate for desktop からの投稿"
					}
				]
			}
		}
	]
}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3585cbe2-5d34-373d-627d-171685be185e.png)

こちらを実行すると以下のようにチャネルに投稿されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/5bb65b5a-67ec-aee3-7fac-2c0203e59679.png)

要求本文についてもう少し解説すると、こちらは JSON 形式で Adaptive Cards が構成を指定しています。
指定要素の内、赤枠箇所で Adaptive Cards の構成を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3b6c2cf6-5384-5564-40f5-b3874ac1607c.png)


構成については、Adaptive Cards のリファレンスを参考に構成することも勿論できますが、Adaptive Cards Desinger を使用して、GUI で表示を構成して作成された [CARD PAYLOAD EDITOR] の JSON を赤枠箇所に張り付けることでも利用できます。

[Adaptive Cards Desinger](https://adaptivecards.io/designer)
利用する際には、[Select host app:] を Microsoft Teams に切り替えて利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3513f6b3-e0bc-5fca-6105-dc0d4407ed28.png)

Adaptive Cards の Content 部を差し替えたら実行できるかを確認します。この時にメッセージに関するテキストを PAD の変数を利用して動的にメッセージを切り替えることもできます。以下では、現在の日付時刻がセットされた変数を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/90acc82d-5743-a988-7a61-833c37edf6cd.png)

実行した結果は以下となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/ac099c01-9aee-99e6-1294-2924d3926113.png)



# 3. [Outlook からのメール メッセージの送信] アクションから、 チャネルのメールアドレス向けに投稿
Teams のチャネルが持っているメールアドレス宛の投稿です。

Teams を起動し、チームのチャネルを右クリックし、表示されるメニューから [メール アドレスを取得] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/8d5b9ec2-e684-d1ae-c09b-db20dca3d695.png)

表示されたウィンドウで [詳細設定] をクリックし、どのユーザーからこのメールアドレス宛に送信できるか選択します。
送信可能なユーザーを限定することは、セキュリティリスクを低減させることにもつながるので、特に理由がない限りは [このチームのメンバーのみ] が良いかなと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/259f87b4-6f1b-19e1-d5dc-fda4fbacdf3e.png)


チャネルのメール アドレスは、コピーしてメモ帳などのテキストエディタに張り付けておきます。
このあと使用するのは、<> の中のメール アドレス部分のみです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/521d58e5-c6aa-d6e2-aaf9-17b1865d056b.png)

次に、Power Automate for deskotp 側でメール送信に関するアクションを設定します。
[Outlook を起動します] アクションを追加した後、[Outlook からのメール メッセージの送信] アクションを追加しプロパティを設定します。設定値は下記の通りとなります。

|No | プロパティ | 設定値 |
|:--|:--|:--|
|1 | アカウント: | 自分のメールアドレス | 
|2 | 宛先:|  チャネルのメールアドレス |
|3 | 件名:|  Power Automate Desktop からの送信|
|4 | 本文:|  送信テストです|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/6fd7abdb-613a-0467-7735-3a3424421a4a.png)

実行すると Teams のチャネルに投稿が行われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/a2ae0f44-0cca-be95-bca0-573d079c8b49.png)

本方法を利用する場合は、チャネル宛のメール送信に関する制限もあわせて確認するのが良いと思います。

https://support.microsoft.com/ja-jp/office/microsoft-teams-%E3%81%AE%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%AB%E9%9B%BB%E5%AD%90%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B-d91db004-d9d7-4a47-82e6-fb1b16dfd51e

# おわりに
今回 3 つの方法を紹介しましたが、利用しているライセンスの要件や組織の許可で利用できる機能が異なるので、状況に即して利用を検討されてみてください。