こんにちは、あんこ先生です。
アプリからTeamsのチャネルにメッセージを送っているけど、ユーザーはよってエラーが発生してしまう。
これはユーザーがそのチームまたはチャネルに参加しておらず、メッセージを書き込む権限がないためです。
とはいえ、機械的なメッセージ投稿のためだけに参加させるのはナンセンスですよね。
そんなときはチャネル宛にメールすることで権限がなくても書き込むことができます。
そこで、今回はアプリからTeamsのチャネルにメールを送信する方法を紹介します。
Contents
参加していないチャネルにメッセージを投稿する方法の事前準備
Teamsのメッセージ投稿ってメールからでもできるんですよね。
権限があるなら直接Teamsから投稿すればよいですが、なんらかの事情で権限のないチャネルに投稿したい場合に使える小技です。
おおまかな流れ
投稿先チャネルのメールアドレスを取得する
Outlookコネクタを使ってチャネルにメールを送る
使用するデータソース
今回は使用しません。ただし、Outlookコネクタは接続しておいてください。
OutlookコネクタSendEmailV2アクションの使い方
前提としてSendEmailV2アクションの使い方がわからないと理解が深まりませんよね。
SendEmailV2アクションの構成は以下のとおりです。
Office365Outlook.SendEmailV2( "送信先", "件名", "本文" )
送信先 | テキスト型です。具体的にはメールアドレスを記載します。変数も使えますが、直接記載する場合はダブルコーテーションで囲む必要があります。また、セミコロンで区切れば複数の送信先を指定できます。 |
件名 | テキスト型です。メールの件名を記載します。こちらも変数も使えますが、直接記載する場合はダブルコーテーションで囲む必要があります。 |
本文 | テキスト型の列です。メール本文を記載しますす。改行やHTMLタグにも対応しています。 |
コードを書く前にOutlookコネクタを接続しておきましょう!
サンプルコード
送付先はコードに埋め込み、件名と本文はテキスト入力コントロールの値を参照させた場合
Office365Outlook.SendEmailV2(
"Send@anko7793.com", //送信先
テキスト入力コントロール1.Text, //件名
テキスト入力コントロール2.Text //本文
)
なお、チャネルにメールした場合、件名はスレッドタイトル、本文はメッセージに記載されますよ。
チャネルのメールアドレスを取得する
何はともあれ送信先がわからないと困りますよね。
そのため、メッセージを投稿したいチャネルのメールアドレスを取得します。
取得方法はチャネル横の3点リーダーからメールアドレスの取得を押下するだけです。
詳細設定で[このチームのメンバーのみ]以外を選ぶと部外者メールからのメッセージ投稿が可能になります。
あとはメアドコピーして、SendEmailV2アクションの送付先に貼り付けます。
その際、メールアドレス(下図青色)のみとしてくださいね。
チャネル名や山括弧が含まれていると送信エラーが発生します。
コネクタ使って動的にメールアドレスを抜けないかなと考えましたが、そもそも権限のない人向けの対応なので断念しました。
Outlookコネクタでチャネルにメールを送る
アプリ側の設定になります。
試しにチャネルにメッセージを投稿してみましょう。
まずテキスト入力コントロール2つとメールアイコン1つを設置します。
テキスト入力コントロールにはそれぞれ件名と本文を入力しておきます。
残ったメールアイコンのOnSelectアクションには次のコードを記載します。
メールアドレスは適切なものに置き換えてくださいね。
Office365Outlook.SendEmailV2(
"6d22fbbe.office7793.onmicrosoft.com@jp.teams.ms",
テキスト入力コントロール1.Text,
テキスト入力コントロール2.Text
)
これで準備はバッチリです。
2つのテキスト入力コントロールに件名と本文を入力してから、メールアイコンを押下してみましょう。
チャネルにメッセージが投稿されたでしょうか?
明日のための予備知識
応用 ユーザーに送信先を選択させる
送信先をコードに埋め込むと汎用性に欠けます。
そんな時は、チャネル名とメールアドレスを格納したSharePointリストやコレクションを作っておくとユーザーが送信先を選ぶことができます。
滅多に送信先が増減しないならコレクション、アプリ編集権限ない人にもメンテさせたいならSharePointリストというように使い分けもできますね。
やらかし 投稿はできても削除はできない
Teamsの投稿って基本本人しか削除できないんですよね。
つまりこの方法で投稿した本人はそのチャネルにアクセスできないため削除不可なんです。
さらに他の人も投稿者ではないので削除できません。
無法地帯にならないよう気を付けてくださいね。
参加していないチャネルにメッセージを投稿する方法のまとめ
今回は参加していないチャネルにメッセージを投稿する方法を紹介しました。
TeamsだからTeamsコネクタを使うのかと思ったらOutlookコネクタの方でしたね。
メールを送ればメッセージを投稿できること、そのためにはチャネルのメールアドレスが必要なことがポイントです。
その際、詳細設定から[このチームのメンバーのみ]とすると参加者以外のメールは弾かれるので注意してください。
一応社外の人や社内ドメインに参加していないパートさんもメッセージ投稿できるので使い方次第で応用が利きそうです。
参加していないチャネルにメッセージを投稿する方法でした。
コメントを残す