🏠 PA45トップ› 第26回 資料› ハンズオン手順
PA45 第26回|ハンズオン手順

毎日の報連相カードを、ワンタップに毎日16時にTeamsへ「報連相カード」が届き、🟢🟡🔴のワンタップで状況を集めます。押した答えは「報連相ログ」に記録し、相談・詰まりのときだけ上司へ自動で一報します。順番どおりに進めればできます。

今日つくるもの: 毎日16時に Teams へ報連相カードが届き、🟢順調です/🟡相談したい/🔴詰まってるをワンタップで選ぶと、その答えが SharePoint「報連相ログ」に1行残り、🟡🔴のときだけ上司へ一報が飛ぶフロー。
⏰ 毎日16時に起動→ 🗂️ 3択カードを送って待つ→ 📝 報連相ログに記録→ 📣 相談・詰まりは上司へ
🔰 初参加の方へ: ここから始めても大丈夫です。まず自分1人あての版を作ります——自分あてにカードを送るだけでテストできます。前回までの内容は必要ありません。
STEP 0

準備(記録先のリストと、Teamsアプリの確認)

作るものは2つ。記録先のSharePointリストを1つと、Teamsに「ワークフロー」アプリが入っているかの確認だけです。

  1. SharePoint サイトで 「新規」→「リスト」を選び、空のリストを作ります。名前は 報連相ログ。
    • 列は増やしません。 最初からある 「タイトル」列だけを使い、そこに「状態|ひとこと|日時」を1行で入れます。
  2. Teams の左メニューで 「ワークフロー」アプリが使えるか確認します。
    • カードはこのアプリ経由(フローボット)で届きます。無い場合は「アプリ」から「ワークフロー(Workflows)」を追加します。
⚠️ なぜ先にリストを作る? リストが無いと、あとで「項目の作成」が List not found で失敗します。名前を一字一句同じ(報連相ログ)にしておくと、フロー側で選ぶだけで済みます。
STEP 1

毎日16時に、自動で起動する

Power Automate で「最初から作成」→ スケジュール済みクラウド フローを選びます。

  1. トリガーは 「繰り返し」(スケジュール)。頻度と時刻を下のとおりに入れます。
    間隔1頻度日設定時刻(時間)16タイム ゾーン(UTC+09:00) 大阪, 札幌, 東京
⚠️ タイムゾーンは必ず「東京」に:
  • Power Automate の時刻は初期設定がUTC(世界標準時)です。指定しないと日本時間の朝1時ごろにカードが届いてしまいます。
  • タイム ゾーンを「東京」にして、ちょうど16時に届くようにします。
STEP 2

3択カードを送って、押されるまで待つ(肝)

Teams の 「アダプティブ カードを投稿して応答を待機する」を追加します。ここが今日いちばんの山場です。

  1. +新しいステップ→ Microsoft Teams → 「アダプティブ カードを投稿して応答を待機する」を選びます。
  2. 3つの欄を埋めます。
    投稿者フロー ボット投稿先フロー ボットとチャットをするRecipient自分(本人)
  3. メッセージ欄に、下のカードのJSONを貼り付けます。3つのボタンと「ひとこと」入力欄が入ったカードです。
カードアクションの設定画面(投稿者・投稿先・メッセージ=カードJSON・Recipient)
実際の画面。メッセージ欄にカードのJSONを貼り、Recipient に本人を選んだ状態。
メッセージ欄に貼るカードJSON
{"$schema":"http://adaptivecards.io/schemas/adaptive-card.json","type":"AdaptiveCard","version":"1.4","body":[{"type":"TextBlock","text":"今日の状況は?","weight":"Bolder","size":"Large","wrap":true},{"type":"TextBlock","text":"ボタンを1つ押すだけ(記録します)","isSubtle":true,"wrap":true,"spacing":"None"},{"type":"Input.Text","id":"comment","label":"ひとこと(任意)","placeholder":"例)午後から資料づくり","isMultiline":true}],"actions":[{"type":"Action.Submit","title":"🟢 順調です","data":{"status":"順調"}},{"type":"Action.Submit","title":"🟡 相談したい","data":{"status":"相談"}},{"type":"Action.Submit","title":"🔴 詰まってる","data":{"status":"詰まってる"}}]}
★このアクションは、ここが特殊です(必ず読む):
  • 「投稿するだけ」のアクションはありません。 必ず名前に「応答を待機する」が付くものを使います。=ボタンが押されるまで、フローはその場で一時停止(実行中のまま待機)します。
  • 前提:Teamsに「ワークフロー」アプリが入っていること(STEP 0)。無いとカードが届きません。
  • カードの見た目は、メッセージ欄にJSONを貼って作ります。デザイナー画面で貼り付けます。
  • 3つのボタンは Action.Submit で、それぞれ data.status を持たせます。 押した答えは body/data/status で受け取ります(submitActionId より確実)。
  • Recipient は実在するユーザーを選びます。 ここがカードの届け先です。まずは自分を選びます。
🧩 追加パネルで探すタイル名に注意:
  • 探すのは 「アダプティブ カードを投稿して応答を待機する」(内部ID:PostCardAndWaitForResponse)。押されるまで待つ=これが今日の肝だからです。
  • アクションの名前は変えずに使います。 画面の名前のままにしておくと、あとで式の中で探しやすくなります。
  • 左にある 「アダプティブ カードを使用してチ…」は別物なので選びません(こちらは待機しません)。
  • 前提:Teams に 「ワークフロー」アプリが入っていること(STEP 0)。

■ カードのJSONは、3つの部品で読む

上の メッセージ欄に貼るカードJSON は、大きく3つのかたまり(①おまじない/②body=見せる中身/③actions=ボタン)でできています。フローで「受け取る」のは、ひとことと押した答えの2つだけです。

JSONの部品意味(なにをする?)フローでの受け取り方
① おまじない(型宣言)― 「カードですよ」の宣言。ふつう触らない
$schema / "type":"AdaptiveCard" / "version":"1.4"「これはアダプティブカードです」という決まり文句。設計図の種類とバージョン。受け取らない
② body(画面に見せる中身・上から順に並ぶ)
TextBlock「今日の状況は?」見出し(weight:Bolder / size:Large=太字・大きめ)。表示だけ
TextBlock「ボタンを1つ…」小さい説明(isSubtle=うすいグレー字)。表示だけ
Input.Text id:"comment"ひとこと入力欄(任意・複数行)。id が受け取るときの名前になる。body/data/comment
③ actions(ボタン)― 押すと送信される
Action.Submit ×3title=画面の文字(🟢 順調です 等)/data の status=送られる答え(順調/相談/詰まってる)。body/data/status
⭐一番のポイント: 押したボタンの data.status が"答え"になります。これを STEP 3 で body/data/status として受け取り、記録のタイトルに使います。ひとことは comment(=body/data/comment)で受け取ります。

■ JSONは手書きしない。Copilotに書かせる

JSONを手書きすると記号のミスが起きやすく、直しに時間がかかります。初心者は書かず、M365 Copilot チャット(Power Automate内蔵のCopilotではなく)に頼んで作るのが速いです。頼み方は次の3つ。

Copilotへの例のプロンプト(そのままコピーして使えます)
Adaptive Card 1.4 の JSON だけを作ってください。要素は次の通り:
・見出し『今日の状況は?』(太字・大きめ)
・小さい説明『ボタンを1つ押すだけ(記録します)』
・任意の複数行入力『ひとこと』(id は comment)
・ボタン3つ(Action.Submit):🟢 順調です(data.status=順調)/🟡 相談したい(data.status=相談)/🔴 詰まってる(data.status=詰まってる)
説明文は不要、JSON だけ返してください。
🔎 貼る前に検品: 出てきたJSONを、アクションの「メッセージ」欄に貼り付けます。ただし Copilot は見出しを "style":"emphasis"(グレー地)で出すことがあります。カードデザイナー/プレビューで見た目を確認し、違えば直します(第20回のCopilot実演でも同じ癖が出ました)。
STEP 3

押した答えを「報連相ログ」に記録する

カードの下に、SharePoint 「項目の作成」を追加します。タイトル1列に3つの情報を並べて記録します。

  1. +新しいステップ→ SharePoint → 「項目の作成」を追加します。
  2. サイトのアドレス=記録先のサイト、リスト名=報連相ログ を選びます。
  3. タイトルに、下の3つを |(縦棒)でつないで入れます。
    • ①状態(動的コンテンツ)→ ②|を入力 → ③ひとことの式 → ④|を入力 → ⑤日時の式、の順。
項目の作成の設定画面(リスト名=報連相ログ/タイトルの式)
実際の画面。タイトルに body/data/status | coalesce(…) | convertTimeZone(…) が入った状態。
① 状態(動的コンテンツ、または式で取り出す)
body/data/status
③ ひとこと(fx に貼る・未入力なら「(ひとことなし)」)
coalesce(triggerBody()?['comment'],'(ひとことなし)')
💡 ひとことの取り出し方: ひとことはカードの動的コンテンツ「comment」から入れるのが簡単です。式で書くときは、上のようにカードのアクションから comment を参照します(動的コンテンツが出ないときは fx で書きます)。
⑤ 日時(fx に貼る・日本時間の文字にする)
convertTimeZone(utcNow(),'UTC','Tokyo Standard Time','yyyy/MM/dd HH:mm')
★タイトルの式を、3つの部品に分けて読む: タイトルは、下の3つを | でつないだものです。
式の部品なにをする?今回の値
body/data/status押したボタンの答え(data.status)を取り出す。🟢なら「順調」。順調
coalesce(comment,'(ひとことなし)')coalesce=前が空なら後ろを使う。ひとこと未入力なら「(ひとことなし)」に。順調です
convertTimeZone(utcNow(),'UTC','Tokyo Standard Time','yyyy/MM/dd HH:mm')今の時刻(UTC)を日本時間に直して、決めた書式の文字にする。2026/09/02 14:24
できあがるタイトル: 順調|順調です|2026/09/02 14:24 ── 列を増やさなくても、1行で「状態・ひとこと・日時」が読めます。
STEP 4

相談・詰まりのときだけ、上司へ一報

記録の下に 「条件」を追加し、「順調」でないときだけ上司へ知らせます。

  1. +新しいステップ→ コントロール → 「条件」を追加します。
  2. 条件を 状態 = body/data/status/次の値に等しくない/順調 にします。
    左辺body/data/status演算子次の値に等しくない右辺順調
  3. 「はい」(True)の中に、Teams 「チャットまたはチャネルでメッセージを投稿する」を入れ、上司(デモでは自分)あてに一報を投稿します。
  4. 「いいえ」(False)は空のままでOK。順調な日は記録だけ残します。
上司へのメッセージ([ ]は動的コンテンツ・式に置き換え)
📣 報連相:本人が「[状態]」を選びました
ひとこと:[ひとこと]
時刻:[日本時間の日時]
上司への通知メッセージの実物
実際に届いた一報。状態・ひとこと・時刻が差し込まれます。
なぜ「順調」だけ通知しない? 毎日すべて通知すると、上司の画面が埋もれます。手を打つべきもの(相談・詰まり)だけを届けると、通知が「困りごと」だけになり、見落としが減ります。記録はどちらの場合も残っています。
STEP 5

保存して、テストする

  1. 右上の 「保存」→ 「テスト」→「手動」で今すぐ実行します(毎日16時を待たずに試せます)。
  2. Teams にカードが届きます。ひとことを書いて、🟡相談したいを押します。
  3. SharePoint「報連相ログ」に1行追加され、🟡なので上司への一報も届きます。🟢で試すと、記録だけで通知は来ません。
報連相ログに記録された行
実際の画面。「状態|ひとこと|日時」が1行で記録されています。
💡 ここまで来たら完成です。 あとは Recipient を各メンバーにして Apply to each で全員へ配れば、チーム全体の報連相が毎日回りはじめます(毎日新しいカードなので重複しても問題ありません)。まずは1人版で十分です。
うまくいかないとき:
  • カードが届かない → Teams に 「ワークフロー」アプリが入っているか/Recipient が正しいか。
  • 記録でエラー → 「報連相ログ」リストができているか/リスト名が一字一句同じか(List not found)。
  • 時刻がずれる → タイム ゾーンが 東京 になっているか。
  • ひとことが空欄で「(ひとことなし)」にならない → coalesce の1つ目に、カードの comment を正しく参照しているか。
  • 順調でも通知が来る → 条件が「次の値に等しくない/順調」になっているか。右辺の文字は data.status と同じ「順調」に。
← 第26回の資料にもどる 🏠 サイトのトップへ