PA45 第29回|ハンズオン手順
動的コンテンツに出てこない値も、Copilotと一緒に式で取り出せるようになる毎朝、練習用に送った3通をとってきて、件数といちばん新しい件名を取り出し、Teamsに1通で届けます。動的コンテンツの一覧に出てこない値を、自分の手で取り出せるようになります。
今日つくるもの: 毎朝8時に動いて、件名に
PA45 が入ったメールを
新しい順にとってきて、
件数といちばん新しい件名を並べた
1通のメッセージを自分あての Teams に届けるフロー。
⏰ 繰り返し(毎朝8時)→
📥 PA45のメールを取得→
🔍 出力を読んで式にする→
📨 Teamsに1通
🔰 初参加の方へ: ここから始めて大丈夫です。用意するものはありません(リストもフォームも作りません)。最初に自分あてに練習用のメールを3通送るところから始めます。第14回「JSONの読み方」に出ていなくても、STEP 3 で復習します。
STEP 0第1章 まず動かす
自分あてに、練習用のメールを3通送る(3分)
🧑💼 オートさん「なぜ」:全員が同じ3通で試せば、結果をそろえて確かめられるから
いきなり受信トレイを読むと、人によって件数も中身もばらばらになります。画面共有をしていると本物のメールも映ります。そこで、自分で送った3通だけを読む形にします。
- Outlook で 自分あてに3通送ります。件名の先頭に PA45 を付けます。
- 件名の例:PA45 見積の件 / PA45 議事録の共有 / PA45 来週の打ち合わせ
- 本文は空でかまいません。3通で30秒ほどです。
- 受信トレイに3通とも届いたのを、目で確かめてから次へ進みます。
- 届くまで数十秒かかることがあります。0通のままフローを動かすと、件数が 0 になって何も出ません。
⚠️ もし届いていなかったら: あわてず、もう1通送って少し待ちます。件数が 0 のときにどう見えるかも、今日の確認ポイントのひとつです(length() が 0、first() は空)。フローは壊れていません。
💡 こうしておくと、あとが楽です。 全員の結果がそろうので、式の答え合わせができます。件数も件名も、手元と画面で同じものが出ます。
■ 自分あてにメールを送れない環境のときは:
- 案A(おすすめ):件名に PA45 を付けて自分あてに3通。全員同じ結果になります。
- 案B:送れない場合は、すでに受信トレイにある言葉で絞ります(例:件名フィルターに お知らせ)。件数は人それぞれになりますが、式はまったく同じです。
- 案C:どちらも難しければ、手を動かさず画面を見るだけで大丈夫です。式の読み方は、講師の画面の出力で追えます。
⚠️ 会社のメールを画面共有するとき: 受信トレイをそのまま開くと、取引先名や件名が映ります。今日は件名フィルターで自分の3通だけに絞るので、実行結果にも他のメールは出てきません。
STEP 1
繰り返し(毎朝8時)で始める
🧑💼 オートさん「なぜ」:課長は毎朝8時に知りたい。人が押さなくても時刻で動くのが「繰り返し」だから
Power Automate で 「作成」→「スケジュール済みクラウド フロー」を選びます。時刻で自動的に始まるフローです。作っている途中は テスト → 手動 でいつでも動かせます。
- フロー名は 毎朝のメールをまとめて知らせる など、分かる名前にします。
- 開始日時は今日、繰り返し間隔は 1 日。作成を押します。
- トリガー「繰り返し」を開いて、タイム ゾーンを (UTC+09:00) 大阪、札幌、東京、設定時刻 (時間) を 8 にします。
💡 タイム ゾーンを忘れると9時間ずれます。 既定は協定世界時(UTC)なので、日本時間の朝8時にしたいときは必ず東京に変えます。
STEP 2
PA45のメールだけ、新しい順にとってくる
🧑💼 オートさん「なぜ」:何通もまとめて取れるのが「メールを取得する (V3)」。件名フィルターで PA45 の3通だけに絞る
Office 365 Outlook の 「メールを取得する (V3)」を追加します。まとめて何件も返ってくるアクションです。
- +新しいステップ→ Office 365 Outlook → 「メールを取得する (V3)」を追加します。
- 欄を埋めます。詳細パラメーターを開くと下の欄が出てきます。
フォルダーInbox件名フィルターPA45未読のみを取得しますか?いいえ添付ファイルを含めるいいえ上位5
⚠️ 「上位」を大きくしすぎない。 100件にすると、返ってくる出力も100件分になります(本文のHTMLも全部入るため、とても大きくなります)。まずは5件で作り、動いてから増やします。
STEP 3
まず1回動かして、緑になるのを見る
🧑💼 オートさん「なぜ」:式を書く前に、まずメールが取れているかを確かめたいから
- 右上の 「保存」→ 「テスト」→ 「手動」→ 「テスト」→ 「フローの実行」→ 「完了」で動かします。
- 2つのアクションに緑の✓が付けば成功です。取ってきた中身は STEP 6 で開きます。
STEP 4第2章 つまずく
取ってきた件名を、Teamsに送ってみる
🧑💼 オートさん「なぜ」:課長は移動中にスマホの Teams を見るので、届け先は Teams。まずは件名を送ってみる(ここでつまずきます)
オートさんと同じことをやってみます。うまくいかないのが正解のステップです。
- 「メールを取得する (V3)」の下の + → Microsoft Teams → 「チャットまたはチャネルでメッセージを投稿する」を追加します。
- 欄を埋めます。
投稿者フロー ボット投稿先フロー ボットとチャットをするRecipient自分のアドレス
- メッセージ欄で、動的コンテンツの「件名」を選びます。
- Teams のアクションが、「For each」の枠に勝手に入ります。
- 「保存」→「テスト」→「手動」→「テスト」→「フローの実行」→「完了」で動かします。自分あてに 3通バラバラに届きます(新しい順)。
■ なぜ3通に分かれるのかは STEP 6 で出力を見ると分かります。For each は STEP 7 で外します。
STEP 5第2章 つまずく
「件数」を、動的コンテンツの一覧で探してみる
🧑💼 オートさん「なぜ」:課長が最初に知りたいのは「何件来たか」。件数を本文の1行目に入れたいので、一覧から探してみる
- Teams のメッセージ欄で、動的コンテンツの一覧を開きます。
- 「件数」を探します。どこにもありません。
💡 ここからが今日の本題です。 一覧に無い値は、出力を読んで式で取り出します。
続けて:Copilot に件数の式を聞いて、貼ってみる
🧑💼 オートさん「なぜ」:一覧に無い値は式で書くしかない。でも書き方が分からないので、いつもの Copilot に聞く
- ブラウザの別のタブで Microsoft 365 Copilot チャットを開きます(m365.cloud.microsoft/chat)。
- 下の1行をそのまま貼って送ります。
- 返ってきた式の部分だけをコピーします。
- Power Automate のタブに戻り、Teams のアクションを開いて、メッセージ欄の「subject」の後ろをクリックします。
- 半角の / を打ち、「式を挿入する」を選んで、コピーした式を貼り、入力欄の左下の青い「追加」を押します。
- 保存して、どうなるかを見ます。エラーになることが多いです(Copilot はこちらのフローを見ていないため、アクション名が合いません)。
Copilot に送る1行(わざと、何も見せずに聞く)
Power Automate で、メールの件数を数える式を教えて
💡 式は「/」で入れるのが確実です。 メッセージ欄の右の ⚡(動的コンテンツ)や fx(式)のボタンでも入れられますが、本文のような欄ではカーソルの位置を見失って式が入らないことがあります。この先の式も全部、/ →「式を挿入する」で入れます。
■ 次の STEP 6 でやること: 何が返ってきているのか(出力)を自分の目で見ます。出力を見せて聞き直す方法は STEP 9 の下「Copilot に聞く3か所」にあります。
STEP 6第3章 出力を読む
出力を開いて、件名がどこにあるか読む
🧑💼 オートさん「なぜ」:一覧に無い値を取るには、まず何が返ってきているかを見る必要があるから
ここが今日のいちばん大事な手順です。出力を見てから式を書きます。逆にすると、名前を当てずっぽうで書くことになり、ほぼ外します。
- STEP 4 のテストが終わった画面で、キャンバスの「メールを取得する (V3)」をクリックします(緑の✓と秒数が付いています)。
- 左に「実行結果」が出ます。「出力」の右にある「未加工の出力を表示する」をクリックします。
- 右に出力の全文が出ます。見出しは メールを取得する_(V3)。式の中で使う名前と同じです(空白が _ )。
- 出力の欄を見ます。value の [ ] の中に、件名が3件並んでいます。だから「件名」を選ぶと、1件ずつの繰り返しになりました。
■ 出力の形(実際に動かして確かめたもの):
- いちばん外は body。その中に value という名前の配列([ ])があり、取ってきたメールが新しい順に並んでいます(今日の3通なら3件)。
- 1件の中に subject(件名)、from(差出人)、receivedDateTime(受信日時)などが入っています。
- 差出人はアドレスの文字がそのまま入っています(このコネクタは中身を平らにして返します)。
出力の形(要らないところを消したもの)
{
"value": [
{ "subject": "PA45 来週の打ち合わせ",
"from": "(自分のアドレス)",
"receivedDateTime": "2026-09-25T09:02:53+00:00" },
{ "subject": "PA45 議事録の共有" },
{ "subject": "PA45 見積の件" }
]
}
⚠️ 出力は、そのままコピーしないでください。
- 今日の練習用3通でも、出力は19,069 バイトあります(ほしい部分は約300文字)。大半は配送の記録(internetMessageHeaders)で、ふつうのメールでは本文のHTMLも大きくなります。
- 中には差出人・宛先・本文が入っています。Copilotに貼るときは、1件だけ・要る名前だけに削ってから貼ります(上のコピー用がその形です)。
💡 かっこの読み方(第14回の復習): { } は名前で取る(お弁当箱)、[ ] は番号で取る(棚)。棚の1件目は [0] で、人の数え方と1つずれます。
STEP 7第4章 取り出す
3通に分かれる For each を外して、件数を出す
🧑💼 オートさん「なぜ」:3通に分かれた原因は For each(1通ずつ Teams を送る枠)。Teams を外に置けば1回=1通。件数は length() で数える
- 「For each」を選んで、右上の 「⋮」→「削除」。中の Teams も一緒に消えます。
- 「メールを取得する (V3)」の下に、Teams 「チャットまたはチャネルでメッセージを投稿する」をもう一度足します(欄は STEP 4 と同じ)。
- メッセージ欄に PA45のメール: と打ち、続けて / →「式を挿入する」で下の「件数」を入れ、件 と打ちます。
- テスト。1通だけ、「PA45のメール:3 件」と届けば成功です。
件数
length(body('メールを取得する_(V3)')?['value'])
STEP 8第4章 取り出す
いちばん新しい件名(1件目)を1行足す
🧑💼 オートさん「なぜ」:課長がほしいのは「いちばん新しい件名」。新しい順に並ぶので、いちばん前=first()。一覧に無いので式で取る
- メッセージ欄のいちばん最後(「件」の後ろ)をクリックして、Enter で改行します。
- 「1件目の件名:」と打ちます。
- 半角の / →「式を挿入する」→ 下の①を貼る → 左下の青い「追加」。
- 保存 → テスト → 手動 → テスト → フローの実行 → 完了。Teams に「1件目の件名:PA45 来週の打ち合わせ」の行が増えていれば成功です。
① 1件目の件名(これだけ入れればOK)
first(body('メールを取得する_(V3)')?['value'])?['subject']
(時間があれば)2件目の件名:番号で取る
body('メールを取得する_(V3)')?['value']?[1]?['subject']
(時間があれば)最後の1件の件名
last(body('メールを取得する_(V3)')?['value'])?['subject']
(時間があれば)1件目の差出人
first(body('メールを取得する_(V3)')?['value'])?['from']
■ 式の読み方(左から順に): body(アクション名)=そのアクションの結果の箱 → ?['value']=その中の value という箱 → ?[1]=その中の2件目 → ?['subject']=その中の件名。? は「無かったら空で止める」印です。
⚠️ 式の中では、アクション名の空白が「_」(アンダーバー)になります。 画面の名前が「メールを取得する (V3)」なら、式では メールを取得する_(V3) と書きます。アクション名は変えずに、そのまま使ってください。分からないときは、アクションの「コード ビュー」タブで中の名前を確かめます。
💡 赤くなったら、直前に足した1行が原因です。 一度に全部貼らないのはそのためです。
💡 first() と ?[0] は同じ意味です。 0件のときに赤く止まりにくいのは first() のほうです。
STEP 9第5章 届ける
本文を整えて、もう一度テスト(完成)
🧑💼 オートさん「なぜ」:課長がほしい2つ(件数と最新の件名)がそろった。最後にもう一度確かめる
完成した本文の見本(足りない行があれば足す)
PA45のメール:@{length(body('メールを取得する_(V3)')?['value'])} 件
1件目の件名:@{first(body('メールを取得する_(V3)')?['value'])?['subject']}
- 「保存」→ 「テスト」→「手動」→「テスト」→「フローの実行」→「完了」で実行します。
- Teams のフロー ボットから、1通だけ届きます。件数と件名が入っていれば完成です。
- 各アクションを開いて、入力と出力も見てみてください。式が何を返したかが残っています。
- 試し終わったら、フローをオフに戻します(毎朝8時に動き続けるため)。
うまくいかないとき:
- 式が赤い → アクション名が画面と違います。「コードの表示」で中の名前を確かめます。
- 値が空になる → [ ] の番号がずれています。1件目は [0]、2件目は [1] です。
- 件数が 0 → 「上位」が空になっていないか、フォルダーが Inbox になっているかを確認します。
- メッセージが届かない → Recipient が自分のアドレスになっているか確認します。
- 英語のエラーが出た → 読まずに、そのままコピーしてCopilotに貼ります(下の③)。
+
Copilotに聞く3か所(そのまま貼れます)
手を動かすのは自分、分からないところだけ聞く、という使い方です。Power Automate内蔵のCopilotではなく、M365 Copilot チャットに貼ってください。
① 出力を先に見せて、式を作ってもらう(いちばん効きます)
出力を貼らずに聞くと、名前を推測した式が返ってきて、そのままでは動きません。貼るのは1件だけ・要る名前だけに削ったものです。
Power Automate の式を1行だけ教えてください。説明は不要です。
アクション名は「メールを取得する_(V3)」です(式の中の名前)。
このアクションの出力は次の形です(関係ない部分は消しています)。
{
"value": [
{ "subject": "PA45 見積の件",
"from": "(自分のアドレス)" }
]
}
メールの件数を数える式を書いてください。
② 返ってきた式の意味を、日本語で説明してもらう
Power Automate のこの式を、プログラミングを知らない人向けに説明してください。
first(body('メールを取得する_(V3)')?['value'])?['subject']
とくに、? と [ ] と ' ' がそれぞれ何をしているのかを教えてください。
③ エラー文は、訳さずそのまま貼る
Power Automateでこのエラーが出ました。
(エラー文を全文そのまま貼る)
意味と、どこを直せばよいかを教えてください。
⚠️ 貼る前に一度だけ確認: 社名・氏名・取引先・メールアドレスが混ざっていないか見てください。混ざっていたら、架空の名前に置き換えてから貼ります。
💡 一発で終わらなくて普通です。 返ってきた式を試して、違ったらその結果をまた貼る。会話を続けるのが正しい使い方です。