こんにちは、あんこ先生です。
アプリで操作した結果をTeamsに投稿したくありませんか?
できるならやりたいけど、フロー経由は自信ないし…
安心してください!アプリから直接Teamsに投稿することができるんです。
入力した結果を投稿するも良し、誰かに確認のお願いするも良し、使いどころはたくさんあります。
そこで今回はアプリから直接Teamsに投稿する方法をコード付きで解説します。
アプリから直接Teamsに投稿する方法
Teamsコネクタについて
アプリからTeamsに投稿するには、Teamsコネクタが必要です。
コネクタの接続はデータの追加から、Teamsを選ぶだけです。
これでアプリからTeamsにアクセスすることができるようになります。
なお、チームやチャットのアクセス権はアプリ作成者ではなくユーザーに依存します。
作成者はAチームにアクセスできるけど、ユーザーはアクセスできないといったこともあるので注意が必要です。
これ、テスト時には気づきにくいんですよね。
なるべく利用者全員がアクセスできるチームで運用したいですね。
Teamsコネクタのアクションについて
コネクタには用途ごとにアクションが用意されています。
Teamsコネクタだと発言はもちろん、チームやチャネルの一覧取得など多彩なアクションが用意されています。
おなじアクションでも最後にVxがついているものがあります。
これはそのアクションのバージョンを指しており、古いものは使える機能が制限されます。
そのため、基本は最新のもの=数値の大きいものを利用しましょう。
チームやチャネルのIDを調べる
PowerAppsはチーム名やチャネル名で発言先を指定できません。
そのため、投稿先となるチームとチャネルのIDを調べなければなりません。
フローみたいにドロップダウンでチームとチャネルを選択してIDを表示する仕組みを作ってみましょう。
チームのIDを調べる│GetAllTeams
はじめに、自分がアクセスできるチームの一覧をドロップダウンに表示させます。
ドロップダウンの名前はひとまずdrpSelTeamにしておきましょう。
自分がアクセスできるチームの一覧は、GetAllTeamsアクションで取得できます。
指定するプロパティはありません。
戻り値はテーブル型なので、そのままドロップダウンに指定できますよ。
//drpSelTeam.Items
MicrosoftTeams.GetAllTeams().value
その際、必ず.valueまで指定しましょう。
これを漏らすと入れ子テーブルとなり、扱いにくくなります。
また、表示列をdisplayNameにすればチーム名が表示されます。
チームのIDを確認したい場合は、適当なラベルに次のコードを埋め込んでみましょう。
//lblTeamId.Text
drpSelTeam.Selected.id
次はこのドロップダウンで選択したチームのチャネル一覧を取得してみます。
チャネルのIDを調べる│GetChannelsForGroup
チャネルの一覧を取得するには、GetChannelsForGroupアクションを使います。
こちらのドロップダウンの名前はdrpSelChannelにしておきます。
指定するプロパティは1つで、グループID=チームIDです。
チームIDは先程のドロップダウンの選択値を指定しましょう。
//drpSelChannel.Items
MicrosoftTeams.GetChannelsForGroup(drpSelTeam.Selected.id).value
こちらも表示列をdisplayNameにすればチャネル名が表示されます。
これでdrpSelTeamで選択したチームのチャネル一覧が表示されます。
チャネルのIDを確認したい場合は、適当なラベルに次のコードを埋め込むます。
指定したチャネルに投稿する
特定のチャネルに発言するには、PostMessageToChannelV3アクションを使います。
指定するプロパティは4つもあるのでひとつずつ解説していきます。
グループID
チームIDのことです。
直接コードに打ち込む場合はダブルクォーテーションで括ります。
今回はドロップダウンで選択しているのでその値をそのまま使います。
MicrosoftTeams.PostMessageToChannelV3(
drpSelTeam.Selected.id, //◀ここ
drpSelChannel.Selected.id,
{content:txtContent.Text,contentType:"Html"},
{subject:txtSubject.Text}
)
チャネルID
投稿先チャネルのIDです。
こちらも直接コードに打ち込む場合はダブルクォーテーションで括ります。
また、ドロップダウンで選択しているのでその値をそのまま使います。
MicrosoftTeams.PostMessageToChannelV3(
drpSelTeam.Selected.id,
drpSelChannel.Selected.id, //◀ここ
{content:txtContent.Text,contentType:"Html"},
{subject:txtSubject.Text}
)
本文
その名の通り本文で、この値がそのまま投稿されます。
本文とコンテンツタイプを含んだレコード型のため、{}で括ります。
contentTypeはHtmlかTextを文字列で指定します。
注意点として、すべて大文字だとなぜかエラーになります。
頭文字だけ大文字か全部小文字で指定しましょう。
contentTypeでHtmlを選択した場合は本文でタグが使えます。
もちろんテキストだけでも大丈夫ですが、在庫が少ない商品を赤字にするといったこともできますよ。
本文は、テキスト入力txtContentに入力した値を指定しています。
MicrosoftTeams.PostMessageToChannelV3(
drpSelTeam.Selected.id,
drpSelChannel.Selected.id,
{content:txtContent.Text,contentType:"Html"}, //◀ここ
{subject:txtSubject.Text}
)
なお、contentTypeでTextを選択した場合、タグはそのまま表示されます。
タイトル
投稿時のタイトルで、省略できます。
タイトルしかありませんがレコード型なので{}で括ります。
タイトルは、テキスト入力txtSubjectに入力した値を指定しています。
MicrosoftTeams.PostMessageToChannelV3(
drpSelTeam.Selected.id,
drpSelChannel.Selected.id,
{content:txtContent.Text,contentType:"Html"},
{subject:txtSubject.Text} //◀ここ
)
アプリから直接Teamsに投稿する方法のまとめ
今回はアプリから直接Teamsに投稿する方法を紹介しました。
投稿するだけならTeamsから直接行った方が早いです。
冒頭でも触れたように、レコード更新時にその結果を、または終わったことを自動で投稿するといった使い方になってくるのかなと思います。
アイデア次第で業務の品質や生産性を向上できる仕組みなのでぜひ使ってみてください。
別記事になりますが、メンションや本文の改行についても紹介する予定なので期待してお待ちください。
コメントを残す