🎋

PowerAutomateでTeams会議作成→Teamsチャネル&Viva Engageに投稿を自動化

2023/07/18に公開

社内で運営している勉強会の開催のアナウンスをするためにTeams会議作成→Viva Engageに投稿→Teamsチャネルに投稿を自動化するフローを作ったのでレシピを残しておきます。

やること

  1. 勉強会のタイトル、開催日時、説明文をInputで与えてTeams会議を作成
  2. Viva Engageに1で作成した会議のリンク、勉強会のタイトル、説明文を投稿する
  3. Teamsチャネルに勉強会のタイトル、開催日時、説明文、Teams会議の参加リンクを投稿

Input(Sample)

Inputとして、各項目にChatGPTに作ってもらった以下のデータを与えます

  • タイトル(これがTeams会議のタイトル、Teamsチャネル投稿のタイトルになる)

PowerAutomateを使ったAzure DevOpsバグチケット登録の勉強会

  • 開催開始日時(これが作成されるTeams会議の開始日時になる)

2023/7/18 13:00

  • 開催開始日時(これが作成されるTeams会議の終了日時になる)

2023/7/18 14:00

  • 説明文 (これが作成されるTeams会議の説明文、Teamsチャネルの投稿内容、Viva Engageへの投稿内容になる)

みなさん、こんにちは!
PowerAutomateとAzure DevOpsに興味はありますか?バグチケットの運用方法を効率化する方法を知りたいと思いませんか?
私たちは、そんな皆さんのために「自動化マスター!PowerAutomateを使ったAzure DevOpsバグチケット登録の勉強会」を開催します!
この勉強会では、PowerAutomateを使ってAzure DevOpsのバグチケット登録を自動化する方法を学びます。効率的で迅速なバグチケットの運用方法を手に入れましょう!
開催日時: 7月7日(木曜日) 13:00-14:00
参加条件:
PowerAutomateの実行環境をお持ちの方
Azure DevOpsでプロジェクトが作成されている方
この勉強会は、PowerAutomateやAzure DevOpsに興味がある方、バグチケットの運用方法を効率化したい方に最適です。初心者から上級者まで、どなたでも参加いただけます。
勉強会には限られた席数がありますので、お早めにご登録ください。参加費は無料です。
皆さんと一緒に素晴らしい勉強会を楽しみにしています!お会いできることを心から楽しみにしています。
以上、PowerAutomateを使ったAzure DevOpsバグチケット登録の勉強会のアナウンスでした。
ご質問や疑問点がありましたら、お気軽にお問い合わせください。
よろしくお願いいたします!

フローのレシピ

以降でフローの作り方を紹介していきます。
最初のアクションで与えるデータは上記のInput(Sample)を使用する体です。

トリガーの選択

Inputを受け取るためのトリガーを選択します。
「インスタントクラウドフロー」を選択して、

フロー名に適当に名前をつけて「手動でフローをトリガーします」を選択。

「入力の追加」を選択して、フロー実行時に渡すInput項目を設定します。

こんな感じでデータ型が選べます。

今回は、以下の項目をInputとして受け取るように設定していきます。

  • タイトル(string)
  • 開催開始日時(DateTime)
  • 開催終了日時(DateTime)
  • 説明文(string)

こうなりました。

※各項目のテキストボックスに入力した文字列はこんな感じでフロー実行時にPlaceholderとして表示されます。

Teams会議の作成

手動トリガーで受け取ったタイトル、開催開始/終了日時、説明文を使ってTeams会議を作成します。

改行を反映する

Teams会議の説明文はhtmlなので、Inputで渡した説明文の文字列の中の改行を<br>に変換する処理が必要です。
文字列の置換処理には以下のreplace関数を使用します。

replace('{対象文字列}', '{oldText}, '{newText}')

Teams会議作成の前に、{oldText}にInputで受け取った説明文をセットするため、一旦Inputで受け取った説明文を変数に格納します。「アクションの追加」で「変数の初期化」を選択します。

「名前」には変数の名前を、「種類」では変数のデータ型を、「値」では変数に格納する値を設定します。

ここでは、Inputで受け取った説明文の文字列を変数に格納するの「動的なコンテンツを追加」から、「説明文」を選択します。

ついでにアクションの名前もわかりやすいように変数名と同じmessageに変更します。
・・・をクリック→「名前の変更」で名前を変更します。

では、Teams会議を作っていきます。
「アクションの追加」で「Teams会議の作成」を選択します。

こんな感じで設定します。

「カレンダーID」ではBirthdayとかUnited States Holidaysが選べますが、ここではデフォルトのCalendarを選択します。
「件名」では最初の「手動でフローをトリガー」のアクションで入力したタイトルの文字列を設定したいので、「動的なコンテンツの追加」で「タイトル」を選択します。

「メッセージ」の箇所で、「手動でフローをトリガー」のアクションで入力した説明文を設定しますが、ここで説明文の文字列の中の改行を<br>に変換する必要があります。
「メッセージ」のテキストボックスをクリック→「式」を選択して関数のテキストボックスでreplace関数を設定します。

replace関数を以下のように設定します。

replace(variables('message'),decodeUriComponent('%0A'),'<br>')

variables('{変数名}')で、変数名を指定して変数を使用できます。
ここでは、variables('message')で、「変数を初期化」で置換対象の説明文を格納した変数、message変数を設定しています。
decodeUriComponent('%0A')で説明文の中の改行を指定し、これを<br>に置換しています。
「手動でフローをトリガー」で設定される文字列内の改行はUnix系のLF改行コード%0Aであらわされるようです。
PowerAutomateでTeams系のアクションで扱う改行コードについては詳しくはこちらをご覧ください。
https://mizusibuki.com/pa-howto-replace/#toc1

これで、「メッセージ」(Teams会議の説明文)で、手動トリガーでInputとして受け取る説明文内の改行を維持したまま設定できます。

「タイムゾーン」では日本時間のTokyo Standard Timeを設定し、
「開始時刻」、「終了時刻」ではInputで受け取る開催開始/終了日時を設定します。
Teamsの会議の「開始時刻」「終了時刻」では、yyyy-mm-ddThh:mm:ssの形式でDateTimeを設定する為、「動的なコンテンツの追加」で「手動でフローをトリガー」の「開始時間」「終了時間」を追加して以下のように設定します。

あとは、会議のinvitationの宛先を「必須の出席者」「任意出席者」に設定して、Teams会議の作成のアクションの設定は完了です。

Viva Engageに投稿

Teams会議を作成したら、作成した会議のリンク、勉強会のタイトル、説明文を投稿します。
「アクションの追加」でViva Engageの「投稿メッセージ」を選択します。

「グループID」では投稿したいViva Engageのコミュニティを、「ネットワークID」では使用しているViva EngageのネットワークIDを設定します(テキストボックスをクリックすると候補が表示されるので、そこから選択して下さい)。

「メッセージテキスト」がViva Engageに投稿する内容になるので、ここで「動的なコンテンツの追加」で「手動でフローをトリガー」のアクションでInputとして受け取る「タイトル」「説明文」を、「Teams会議の作成」アクションで作成した会議の参加Url(JoinUrl)を設定します。

Teamsチャネルに投稿

Teamsチャネルに勉強会のタイトル、説明文、会議の参加Urlを案内するメッセージを投稿します。
「アクションの追加」でTeamsの「チャットまたはチャネルでメッセージを投稿する」を選択します。

「投稿者」で「ユーザー」を選択するとフロー実行者のアカウントでTeamsチャネルに投稿されます。
「Team」では投稿先のTeams内のチームを、Channelで投稿先のチーム内のチャネルを選択します(ここもテキストボックスをクリックすると候補が表示されます)。
「Message」で投稿するメッセージ内容を、「subject」でメッセージ件名を設定します。
ここでも、「動的なコンテンツの追加」で「手動でフローをトリガー」で設定したタイトルと説明文を使用しています。

※Botに投稿してもらう場合は「投稿者」でフローボットを選択します。
しかし、フローボットに投稿してもらう場合はsubjectの設定ができません。

ちなみに、「Message」ではhtmlタグをエディタから使用することができます。
この赤枠のアイコンをクリックするとコードビュー表示になり、直接htmlが書けるようになります。

こんな感じでリンクを設定することもできます。

これで全部のアクションが設定できました。
全体のフローはこんな感じになります。

おまけ(デバッグ方法)

デバッグしたいときは「スケジュール」>「遅延」のアクションを詳細に見たいアクションの直前もしくは直後に設定してテストをすると、実行中のInput/Outputが確認できます。

デバッグ方法はこちらに丁寧にまとめて下さってる方がいるのでご覧ください。
https://mofumofupower.hatenablog.com/entry/2020/11/17/224059

Discussion