Microsoft Power AutomationとFormを使ってTeamsへの自動投稿を作る
久々に投稿。今回はMicrosoftのPower AutomationとFormを使ってFormの入力内容をTeamsにそのまま投稿する自動投稿機能を作ってみた流れをご紹介。
はじめに
これを作るきっかけはTakram田川さんのこのツイート
これ面白いな、Teamsでも同じことできないかな?と調べはじめたのがきっかけ。実際に調べてみると、以下のサイトを発見、これを真似して作ってみた。
フォームの作成
まずはOffice365のForm機能を使ってアンケートフォームを作成していくよ。ブラウザでOffice365のアプリにアクセスし、Formsを選択。
Formが立ち上がったら新規作成をクリック。右にある書籍購入申請帳票は既に作成済みのフォームです。
すると空のフォームが出来上がるので、項目を作成していきます。
今回は書籍の購入申請兼買った書籍情報のTeams投稿が狙いなので、申請者名、申請日、書籍名、申請価格、購入理由、書籍の内容、Amazonのリンクを記載事項として以下のように作成。申請日はカレンダーで日付投稿が可能なフォームにしています。
ちなみに各項目は必須項目とするか否かを選択できます。必須入力項目にすると質問事項の末尾に赤い※印がつきますよ。また装飾用の画像添付も可能。1つ項目を作り終わったら新規追加ボタンを押すことで質問項目を増やすことができます。
作成したフォームは自動保存されるので、作成が終わったら閉じてOK。
Teams投稿自動化フローの作成
次にOffice365のアプリ一覧からPower Automateを選択
選択すると、Power Automationのホーム画面が開きますので、左側のメニューから作成を選びましょう。
すると作成メニューが出てくるので、オリジナルのフローを作る場合はメニューから自動フローを選択。もしオリジナルではなく各種テンプレートから作成する場合は下段のテンプレートから希望する自動化作業に合致するテンプレートを選びましょう。
すると次のような画面が出てきます。フロー名は任意の名称(例えば今回であれば書籍購入申請フローとか)を入力。「下のフローのトリガーを選択してください」は今回は新しい応答が送信されるときを選択。
作成ボタンを押すと以下の画面が出てくるはずです。いよいよ自動化フローを作っていきます。まずはフォームIDの選択メニューから、先ほど作成したフォーム(先ほどの場合は書籍購入申請帳票(テスト)を作成したのでそれ)を選びます。過去に作成したフォームがいろいろ出てくるので、フォーム名称は過去に作ったものと変えておいた方が良いです。フォームを選択したら新しいステップボタンを押してください。
すると以下のような画面が出てきます。今回はフォームに入力した内容を取得したいので、検索窓に「form」と入れて検索。
すると以下のような画面が出るはずですので、「応答の詳細を取得する」を選択します。
そうすると以下のような入力項目が出てきます。フォームIDは先ほど同様に書籍購入申請帳票(テスト)を選択。応答IDはクリックすると出てくるメニューから応答通知の一覧 応答IDを選択してください。ここまできたら次はいよいよTeamsへの投稿自動化を作成しますので新しいステップをクリック。
メニューからTeamsのアイコンをクリック。すると動作一覧が出てくるのでメッセージを投稿するを選択します。
すると以下のような画面になります。これは投稿するTeams上のチーム及び投稿するチャンネルの選択になります。それぞれご自身のOffice365アカウントが所属しているTeamsのチームやチャンネルが選択できるようになっているので任意の物を選んでください。
今回はチーム名を「アプリケーションテスト」、チャンネルを「Books_form」というところに投稿するようにします。引き続き投稿されるメッセージを作成しますが、ここが今回最大のポイント。動的コンテンツのため、メッセージフォームの下にある動的なコンテンツの追加をクリック。すると右側に動的なコンテンツ一覧(つまりは先ほど作成したフォームの解答内容)が出てきますので、それをクリックすることでメッセージフォームへ追加していきます。
こんな感じ
ちなみにこの動的なコンテンツは入力した値のみを表示させるので、各項目名称(例えば購入申請者名など)は表示されません。なのでもしそれらも投稿させたい場合は、動的コンテンツの左に手入力しておきます。
以上でフローの作成は完了。保存ボタンを押して保存しましょう。
無事に先ほど作成した書籍購入申請フローが追加されました。このフローをTeamsのチームで使用するには先ほどのフローと紐づいているフォームをTeams のタブに追加すればOK。
ちなみに、同一のフォームIDを複数のフローで選択した場合、1回のフォーム入力結果を複数のフローで受け取り、フローの動作を行ってしまいます。つまり、フォーム1とフローA(TeamsのチャンネルAにフォーム1の内容を投稿)、フローB(TeamsのチャンネルAにフォーム1の内容を投稿)がリンクされていると、フローAが投稿を行ったのちにフローBでも上記の場合は同内容の投稿が行われてしまうことが発生します。そのため、各フォームと各フローのリンク管理をきちんと行っておきましょう。
ちなみに上記を応用すると申請内容を自動でメール送信することも可能です。
メール自動送信フローの作成
ここから先は
¥ 100
サポートもできます。もし気に入っていただければサポートお願い致します。