松本典子の「はじめよう!Azure Logic Apps/Power Automateでノーコード/ローコード」 第25回
「今日は出社?在宅勤務?」をワンクリックで職場の同僚に伝えるツール
Teamsとアダプティブ カードで“勤務場所報告ツール”を作ってみよう
2023年04月27日 09時00分更新
こんにちは、Microsoft MVP(Azure / Business Applications)の松本典子です。
コロナ禍以降、オフィス勤務(出社)と在宅勤務の両方を組み合わせたハイブリッドワークを採用する企業も増えているようです。その場合、今日はどこで働いているのかを上司や同僚に伝えなければなりません。メールやチャットで毎朝お知らせするのは少し面倒ですし、うっかり忘れてしまうこともありそうですね。
そこで今回は、「Microsoft Teams」とアダプティブ カードを利用して、今日は出社するのか在宅勤務なのかをワンクリックで報告できる仕組みを作ってみたいと思います。
1. Microsoft Teamsの設定
今回はMicrosoft Teamsのチャネルに報告するかたちにするので、事前にチャネルを作成しておきます。筆者は「勤怠管理」というチャネル名にしました。
2. ワークフロー全体図
今回作成するワークフローの全体像は上図のとおりです。
このワークフローは、毎日決まった時刻に自動実行され、上図のようなアダプティブ カードを社員の個人チャットへ送信します。受け取った社員が選択肢(ラジオボタン)で今日の勤務場所を選び、「送信」をクリックすると、先ほど用意したTeamsの「勤怠管理」チャネルに投稿されます。
それでは、上図に沿ってワークフローを作成していきましょう。
2-1. トリガーの設定
まずは毎日決まった時刻に自動実行されるように、ワークフローのトリガーを設定します。
上部のタブで「組み込み」をクリックし、一覧の中から「スケジュール」コネクタを選びます。トリガーの一覧に「繰り返し」が表示されますので、これをクリックします。
今回のワークフローは勤務日にだけ動いてほしいので、「平日のみ実行」するよう設定します。
まずは上図のように「間隔:1」「頻度:週」を選択しますが、この状態では「毎週1回繰り返す」設定になっています。ここでさらに「詳細オプションを表示する」をクリックします。
この詳細オプション画面で、平日のみ実行するように設定できます。
(1)タイムゾーン:一覧から「(UTC+9:00)大阪、札幌、東京」を選択
(2)開始時刻:日時を入力(今回は「2023-04-01T10:00:00Z」と入力)
(3)設定曜日:一覧が表示されるので「月曜日~金曜日」にチェック
(4)設定時刻(時間):今回は「10」と入力
(5)設定時刻(分):今回は「0」と入力
設定した結果、いつ自動実行されるのかは下の「プレビュー」欄で確認できます。
2-2. アクションの設定:現在の時刻
トリガーを設定できたので、次のアクションを作成します。
アクションの検索窓に「日時」と入力して、「日時」コネクタをクリックします。アクション一覧から「現在の時刻」をクリックします。その名のとおり、これは実行時点の日時情報を取得するだけのアクションです。設定項目はありませんので、そのまま次に進みます。
次のアクションでは、もう一度「日時」コネクタを検索、クリックして、今度はアクション一覧から「タイムゾーンの変換」を選択します。
(1)基準時間:動的なコネクタから「現在の時刻」をクリック
(2)書式設定文字列:「○月○日」という表示にしたいので、一覧から「カスタム値の入力」を選択。「式」に以下の内容を入力します
formatDateTime(utcNow(),'MM月dd日')
(3)変換元のタイムゾーン:「(UTC-09:00)協定世界時-09」を選択
(4)変換先のタイムゾーン:「(UTC+09:00)大阪、札幌、東京」を選択
このアクションで、先ほど取得した「現在の時間」を日本時間に変換し、さらに日付は「○月○日」という書式に変換します。
2-3. アクションの設定:アダプティブ カードを投稿して応答を待機する
次は、Teamsのチャットにアダプティブ カードを投稿するアクションを追加します。
アクションの検索窓に「Teams」と入力して、「Microsoft Teams」コネクタをクリックします。アクション一覧から「アダプティブ カードを投稿して応答を待機する」を選びます。
(1)投稿者:「フローボット」を選択
(2)投稿先:「Chat with Flow bot」を選択
(3)メッセージ:アダプティブ カードの内容を入力します。今回は、筆者が作成した以下のJSONコードをコピー&ペーストしてください。
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.2",
"actions": [
{
"type": "Action.Submit",
"title": "送信"
}
],
"body": [
{
"type": "TextBlock",
"text": "本日の勤怠",
"wrap": true,
"size": "Medium",
"weight": "Bolder"
},
{
"type": "Input.ChoiceSet",
"choices": [
{
"title": "出社",
"value": "出社"
},
{
"title": "在宅勤務(終日)",
"value": "在宅勤務(終日)"
},
{
"title": "在宅勤務(午前中)",
"value": "在宅勤務(午前中)"
}
],
"placeholder": "Placeholder text",
"id": "myChoiceSet",
"style": "expanded"
}
]
}
(4)更新メッセージ:今回は「勤怠登録しました。」と入力
(5)Recipient:チャットメッセージを送信するメールアドレスを入力<
なお、アダプティブ カードに表示する内容は第22回でご紹介した「アダプティブ カード デザイナー」を使って自作することもできます。その場合は、選択肢(ラジオボタン部分)のIDが「myChoiceSet」になるよう設定してください。
このアクションは、応答がない場合(社員が勤務場所を選んで「送信」をクリックしない場合)最大30日間待機し続けます。そのため、管理画面の「実行履歴」ではずっと「実行中」と表示されたままになります(30日後に「失敗」に切り替わる)。実用上は問題ありませんが、ずっと実行中のままというのはあまり美しくありません。
そこで、一定時間内に応答がなければ自動でタイムアウトする設定を追加しておきます。右上の「…」をクリックして「設定」を選びます。
設定画面が表示されますので、「期間」のフィールドに「PT3H」と入力します。これは「3時間応答がなければ自動的にタイムアウトする」という意味です。タイムアウトする時間(「3」の数字)は適宜変更してください。
2-4. アクションの設定:チャットまたはチャネルでメッセージを投稿する
Teamsの「勤怠管理」チャネルにアダプティブ カードで選択した結果を投稿します。
アクションの検索窓に「Teams」と入力して、「Microsoft Teams」コネクタをクリックします。アクション一覧から「チャットまたはチャネルでメッセージを投稿する」を選択します。
(1)投稿者:「フローボット」を選択
(2)投稿先:「Channel」を選択
(3)Team:アダプティブ カードで選択した結果を投稿するチームを選択
(4)Channel:「1. Microsoft Teamsの設定」で作成したチャネル(今回は「勤怠管理」)を選択
(5)動的なコンテンツとテキストを入力します。「displayName」にはTeamsの表示名が入ります。「myChoiceSet」はアダプティブ カードのラジオボタンで選択した結果が入ります。
以上の設定が終われば、ワークフローの作成は完了です。忘れずにワークフローを「保存」してください。
3. 実行結果
本記事のとおりに設定すると、月曜日~金曜日の午前10時、Teamsのチャットにアダプティブ カードが送信されます。「在宅勤務(終日)」を選択して「送信」ボタンをクリックしてみましょう。
送信すると「勤怠登録しました。」という表示になりました。Teamsの「勤怠管理」チャネルに投稿されているかどうか確認します。
上図のように、名前とアダプティブカードで選んだ結果が投稿されていました。
3-1. 応答しなかった場合
「2-3. アクションの設定:アダプティブ カードを投稿して応答を待機する」では、応答がない場合に3時間でタイムアウトするよう設定しました。ですので、3時間何も応答がなかった場合、ワークフローの実行結果は「失敗」となり、実行履歴を確認すると上図のようになります。
なお、タイムアウト後にアダプティブ カードの「送信」ボタンを押しても何も送信されず、「勤怠登録しました」という表示にも切り替わりません。
4. 最後に
今回ご紹介したワークフローはTeamsのチャネルに結果を投稿するかたちになっているので、部内やプロジェクトメンバーなど少人数の間での報告に向いていると思います。今回は勤務場所の通知に使いましたが、もちろんアダプティブ カードの内容を書き換えればほかの用途でも幅広く使えるでしょう。ひとつのアイデアとして、本記事を参考にしていただければと思います。
参考サイト
この連載の記事
-
第44回
Team Leaders
契約書を確実に期限管理! SharePoint+Power Automateで期日通知を自動化 -
第43回
Team Leaders
社内からの質問に自動回答! AI Builder+ノーコードでQ&Aボットを作ろう -
第42回
Team Leaders
Power Automateで複数人の承認(多段階承認)ワークフローを簡単作成しよう -
第41回
Team Leaders
重要なTeamsメッセージの見失い/見落としを防ぐPower Autometeのフローを作ろう -
第40回
Team Leaders
クラウドフローからデスクトップフローを「Picture-in-Picture」で起動する -
第39回
Team Leaders
面倒なカレンダー登録作業を生成AIで自動化するワークフローを作ろう -
第38回
Team Leaders
生成AIに日本語プロンプトで指示を出し、メールから情報を抽出してもらおう -
第37回
Team Leaders
フォルダー内のすべてのファイルを添付してメールを自動送信するフローを作ろう -
第36回
Team Leaders
ローカルPCのテキストファイルをPower Automateに読み込ませて活用しよう -
第35回
Team Leaders
受信メールの添付ファイルを種類に応じたフォルダに自動保存する -
第34回
Team Leaders
Power AutomateでTeamsのチーム全員にメンションを送る方法 - この連載の一覧へ