Power AppsでPower Automateを使用してTeamsのチャネルや他のユーザーへ投稿する際には、フローを作成したユーザーとして投稿するか、Flow Botとして投稿するしかありません。(JSONで投稿する方法もありますが、少し敷居が高いです。)
ですので、フローを作成した本人以外がフローで投稿した場合なにかと不都合です。
今回はフローを使用せずにPower AppsのTeamsコネクタを使用してボタンを押した本人として投稿する方法を紹介します。
Teamsコネクタ
データ→データの追加より、Microsoft Teamsを選択することで追加できます。
公式Docs→Microsoft Teams (Preview)
このコネクタを追加することで、Teamsにかかわる関数を使用できるようになります。
チャネルへの投稿方法
実際にPower Appsでチャネルへ投稿する方法を解説します。
使用する関数
Teamsのコネクタを接続することで、MicrosoftTeamsの関数を使用できるようになります。
MicrosoftTeams.GetAllTeams
所属しているすべてのチームを一覧で出力します。
MicrosoftTeams.GetAllTeams()
MicrosoftTeams.GetChannelsForGroup
MicrosoftTeams.GetAllTeamsなどで得たグループIDを使用して、グループ内のチャネルを一覧で出力します。
MicrosoftTeams.GetChannelsForGroup(groupID)
groupId:チームのID。GetAllTeamsなどを使用して取得します。
MicrosoftTeams.PostMessageToChannelV3
上記二つの関数で取得したIDを使用してチャネルに投稿します。
MicrosoftTeams.PostMessageToChannelV3(groupId,channelId,body,[subject])
groupId:チームのID。GetAllTeamsなどを使用して取得します。
channelId:チャネルのID。GetChannelsForGroupを使用して取得します。
body:以下のように入力します。
{
content:[テキストまたはHtmlを入力],
contentType:["Text"または"Html"と入力]
}
subject:以下のように入力します。(任意)
{
subject:[テキストを入力]
}
チャネルへメッセージを投稿する関数です。bodyとsubjectの指定方法が複雑なので注意してください。
アプリを作成
実際にメッセージを投稿するアプリを作成します。
ドロップダウン2つ、テキストボックス1つとボタンを1つ設置してください。
Dropdown1
1つ目のドロップダウンでは、チームを選択します。
Itemsに以下のように入力します。
MicrosoftTeams.GetAllTeams().value
参加しているすべてのチームを取得します。Valueを以下のように設定して表示名によって選択できるようにします。
OnChangeに以下のように入力します。
Set(_groupid,Self.Selected.id)
_groupid変数に入れておくことでアプリ内の他の場所で参照できるようにしておきます。
Dropdown2
2つ目のドロップダウンでは、チャネルを選択します。
Itemsに以下のように入力します。
MicrosoftTeams.GetChannelsForGroup(_groupid).value
指定したチーム上のチャネルを一覧で取得します。
同様にValueを以下のように設定して表示名によって選択できるようにします。
OnChangeに以下のように入力します。
Set(_channelid,Self.Selected.id)
_channelid変数に入れておくことでアプリ内の他の場所で参照できるようにしておきます。
Button1
ボタンには、ドロップダウンで選択したチャネルへテキストボックスに入力した内容を投稿する動作を割り当てます。
OnSelectに以下のように入力します。
MicrosoftTeams.PostMessageToChannelV3(_groupid,_channelid,
//投稿内容
{
//本文
content:TextInput1.Text,
//"Html"or"Text"
contentType:"Text"
},
//件名
{
subject:"投稿テスト"
}
)
動作テスト
以下のように選択、入力して投稿してみます。
以下のように投稿出来ました。
この投稿ボタンを押した本人が投稿しますので、内容の編集をすることも出来ます。
まとめ
Power Apps上でTeamsチャネルへ投稿する方法を紹介しました。
今回はチームとチャネルを選択してから投稿しましたが、投稿するチャネルが決まっている場合はApp.OnStartにSet関数で以下のように入力しておきましょう。
Set(_groupid,[取得したチームIDを入力]);
Set(_channelid,[取得したチャネルIDを入力]);
毎回チームIDとチャネルIDを取得しなくてよくなるので動作速度が向上します。
また、リッチテキストエディターで入力する場合はcontentType:"Html"とすることでリッチテキスト形式で送信できます。
もっとスマートなコンポーネント版→【カスタムコンポーネント】Power AppsからTeamsへ投稿する
コメント
[…] 【Teamsコネクタ】Power AppsでTeamsチャネルへユーザー個人として投稿でご紹介した、Power Appsから直接Teamsへ投稿する機能を、コンポーネントにして再利用可能なパーツとして作成します。 […]
[…] Power AppsからTeamsへは、【Teamsコネクタ】Power AppsでTeamsチャネルへユーザー個人として投稿の方法を使って投稿できます。 […]
PowerAppsで選択したユーザー個人宛に、Teamsでチャットを送ることは出来ないでしょうか?
記事作成しますのでお待ちください。