Teamsの承認アプリとPower Automateの承認フロー:申請から承認までを作る

公開 書いた人 大林 諒

休暇申請や備品の購入、見積の値引きのように「誰かにOKをもらってから進める」仕事は、どの会社にもあります。紙やメールで回していると、誰で止まっているか分からない、承認したかどうかが後から追えない、という状態になりがちです。Microsoft 365には、Teamsの「承認」アプリと、Power Automate(パワーオートメイト)の承認アクションという2つの仕組みが入っていて、どちらも追加の費用なしで使えます。この記事では、サンプル工務店の休暇申請を例に、2つの使い分けから、SharePoint リストを起点にした承認フローの作り方、多段承認・差し戻し・期限切れの扱い、履歴がどこに残るかまでを通して書きます。前提は、Microsoft 365 Business Standard を使っていて、SharePoint リストを1つ作ったことがある程度です。

この記事の内容
  1. 先に決めること
  2. Teamsの承認アプリとPower Automateの承認フロー
  3. 承認の種類
  4. 休暇申請の承認フローを作る
  5. 応用:多段承認・差し戻し・代理・期限切れ
  6. 承認の履歴が残る場所
  7. できないことと、その代わり
  8. よく詰まるところ
  9. 次にやること

先に決めること

承認の仕組みは、作り始めてから決め直すと、リストの列もフローも作り直しになります。次の4つは手を動かす前に紙に書いておきます。

1つ目は、承認者を誰にするかです。「申請者の上長」にするなら、Microsoft 365 のユーザー情報に上長(マネージャー)が登録されている必要があります。小さな会社では登録していないことが多いので、登録するか、承認者をリストやフローの中で固定するかを先に決めます。サンプル工務店では、総務の事務Bがユーザー情報に上長を登録し、営業の上長は代表、現場監督の上長は工事の責任者、事務の上長は代表という形にしました。

2つ目は、何段で承認するかです。休暇は上長1人で足ります。経費精算のように金額で承認者が変わるものは、「5万円未満は上長、5万円以上は上長のあとに代表」のように段数の条件まで決めます。

3つ目は、結果をどこに残すかです。承認の記録は Power Automate の側にも残りますが、後で「去年の夏に誰がいつ承認したか」を探すのは、申請を入れた SharePoint リストのほうが圧倒的に楽です。状態・承認者・承認日時・コメントの列をリストに作り、フローで書き戻す前提にします。

4つ目は、差し戻しと期限切れを扱うかです。差し戻し(申請者に直してもらって出し直す)を入れると、フローの作りが一段複雑になります。最初は「承認か却下か」だけで作り、運用してから差し戻しを足すのが安全です。

Teamsの承認アプリとPower Automateの承認フロー

まず2つの違いを表にします。どちらも中身は同じ承認の仕組み(Power Automate の承認の基盤)で動いていて、承認者から見ると届き方もほぼ同じです。違うのは「誰が・いつ・どう依頼を出すか」です。

比べるところTeamsの承認アプリPower Automateの承認フロー
依頼の出し方人がその場で「新しい承認要求」から作るリストへの登録やメール受信などをきっかけに自動で出る
フローを作る必要不要必要(「開始して承認を待機」アクションを入れる)
向く仕事その場限りの確認(備品の購入、見積の最終確認)毎回同じ形の申請(休暇、経費、発注)
定型化テンプレート(チームの所有者や管理者が作る)フローそのものが定型
承認後の処理基本は無し(結果を見て人が動く)リストの更新・メール・Teams 投稿まで自動
承認が保存される環境組織の既定の環境フローを置いた環境
承認者の応答場所Teams、Outlook、Power Automate の承認センター同じ

使い分けは単純で、月に数回しか出ない承認や、内容が毎回違う承認は Teams の承認アプリで十分です。毎回同じ項目を書く申請で、承認後にリストを書き換えたり担当に知らせたりするなら、Power Automate のフローにします。サンプル工務店では、事務用品や工具の購入は承認アプリ、休暇申請と経費精算はフロー、と分けています。

Teamsの承認アプリの使い方

  1. Teams の左側の「その他のアプリ」(「…」)を選び、「承認」を検索して「承認」アプリを開きます。
  2. アプリの右上の「新しい承認要求」を選びます。
  3. 要求の名前、承認者、詳細を入れ、必要ならファイルを添付します。
  4. 承認者が複数で全員の応答が要るときは「すべての承認者からの応答を要求」をオンにします。1人の承認で済むならオフにします。
  5. 「送信」を選びます。送った依頼はアプリの「送信済み」タブで状態を確認できます。
Teamsの承認アプリで「新しい承認要求」を開き、要求の名前・承認者・「すべての承認者からの応答を要求」のトグルが見えている状態
Teamsの承認アプリで「新しい承認要求」を開き、要求の名前・承認者・「すべての承認者からの応答を要求」のトグルが見えている状態

チャットやチャネルの入力欄の下にある承認のアイコンからも同じ依頼を作れます。アプリが見つからない場合は、Teams 管理センターで承認アプリが無効になっています。管理者に「Teams アプリ」→「アプリを管理」で「承認」を有効にしてもらいます。

テンプレート

毎回同じ項目を書かせたい依頼は、承認アプリのテンプレートにできます。チームの所有者は自分のチームで使うテンプレートを作れ、管理者は組織全体のテンプレートを作れます。テンプレートの入力項目は Microsoft Forms の仕組みで作られるため、テンプレートを作る人には Microsoft Forms のライセンスが要ります(Business Standard には含まれています)。使う側は「新しい承認要求」で「テンプレート」を選ぶだけです。

テンプレートについて知っておくことが3つあります。チームを削除するとそのチームのテンプレートも消えること。Microsoft Forms 側で元のフォームを削除するとテンプレートが壊れ、依頼を出せなくなること。1つのチームに置けるテンプレートは400個まで、1つのテンプレートで集められる要求は50,000件まで、という上限があること(2026年10月時点)。

承認アプリの「新しい承認要求」でテンプレートの一覧が表示されているダイアログ
承認アプリの「新しい承認要求」でテンプレートの一覧が表示されているダイアログ

承認の種類

Power Automate の承認アクションには、承認の種類が5つあります。ここを間違えると「1人が承認したのに先に進まない」「部長が却下したのに通ってしまった」が起きます。

承認の種類動きサンプル工務店での使いどころ
承認/拒否 – 全員の承認が必須全員の応答を待つ。1人でも拒否すればその時点で次へ進む就業規則の改定(代表と総務の両方の確認)
承認/拒否 – 最初に応答割り当てた人のうち誰か1人が応答したら次へ進む休暇申請(上長か代表のどちらか)
カスタム応答 – すべての応答を待つ選択肢を自分で決める。全員の応答を待つ社内の日程調整を兼ねた確認
カスタム応答 – 1 つの応答を待つ選択肢を自分で決める。1人が応答したら完了承認・差し戻し・却下の3択
順次承認決めた順に1人ずつ依頼する。全員が応答してから次へ進む経費精算(上長→代表)

カスタム応答は「承認」「却下」以外の答えを用意したいときに使います。値引きの依頼に「5%まで」「10%まで」「却下」と選ばせる、差し戻しを選択肢に入れる、といった使い方です。応答の選択肢は短く、はっきり違う言葉にします。

休暇申請の承認フローを作る

ここからが本題です。サンプル工務店の休暇申請を、SharePoint リストに登録したら上長に承認依頼が飛び、結果がリストに書き戻され、申請者に知らせが届く形で作ります。

リストの準備

休暇申請リストには、次の列を用意します。列は最初に英数字の名前で作り、あとから表示名を日本語に変えると、フローの式で列を指定するときに扱いやすくなります(日本語で作った列は内部の名前が記号の並びになるため)。

表示名種類中身
タイトル1行テキスト「営業A 11/20 有給」のような件名
休暇の種類選択肢有給・代休・特別休暇
開始日・終了日日付と時刻休む期間
理由複数行テキスト任意
状態選択肢申請中(既定値)・承認・却下・差し戻し・期限切れ
承認者ユーザーまたはグループフローが書き込む
承認日時日付と時刻フローが書き込む
承認者コメント複数行テキストフローが書き込む

承認者・承認日時・承認者コメントは、申請者が手で触らないように、リストの入力フォームで非表示にしておきます。リストの作り方そのものは「SharePointリストとは:作り方と、Excelの台帳をリストに移す判断」に書いています。

フローを作る手順

  1. Power Automate(make.powerautomate.com)にサインインします。
  2. 左の「マイ フロー」を選びます。
  3. 「新しいフロー」→「自動化したクラウド フロー」を選びます。
  4. フロー名に「休暇申請の承認」と入れます。
  5. トリガーの検索欄に「アイテムが作成されたとき」と入れ、SharePoint の「アイテムが作成されたとき」を選んで「作成」を選びます。
  6. トリガーの「サイト アドレス」で休暇申請リストを置いたサイトを、「リスト名」で「休暇申請」を選びます。
  7. トリガーの下の「+」→「アクションの追加」で「マネージャーの取得 (V2)」(Office 365 ユーザー)を選びます。
  8. 「ユーザー (UPN)」に、トリガーの動的なコンテンツから「登録者 Email」(作成者のメール)を入れます。
  9. その下に「開始して承認を待機」アクションを追加します。
  10. 「承認の種類」で「承認/拒否 – 最初に応答」を選びます。
  11. 「タイトル」に「休暇申請:」と動的なコンテンツの「タイトル」を入れます。
  12. 「割り当て先」(公式のコネクタの説明では「割り当て先ユーザー/グループ」)に、「マネージャーの取得 (V2)」の「メール」を入れます。
  13. 「詳細」に休暇の種類・期間・理由を入れます(書き方は後述)。
  14. 「アイテム リンク」にトリガーの「項目へのリンク」、「アイテム リンクの説明」に「申請を開く」と入れます。
  15. 「リクエスター」(画面によっては「要求元」と表示されます)に作成者のメールを入れます。
  16. アクションの名前を「上長の承認」に変えます(式で参照しやすくするため)。
  17. その下に「条件」を追加し、左に「上長の承認」の「結果」、真ん中に「次の値に等しい」、右に Approve と入れます。
  18. 「True」の側に SharePoint の「項目を更新する」を追加し、「ID」にトリガーの「ID」、「状態」に「承認」、承認者・承認日時・承認者コメントを入れます。
  19. 同じく「True」の側に「メールを送信する (V2)」(Office 365 Outlook)を追加し、宛先に作成者のメール、件名に「休暇申請が承認されました」を入れます。
  20. 「False」の側にも「項目を更新する」(状態は「却下」)と「メールを送信する (V2)」を同じように追加します。
  21. 「保存」を選びます。
新しいデザイナーで「開始して承認を待機」アクションを開き、承認の種類「承認/拒否 - 最初に応答」・タイトル・割り当て先・詳細が入っている状態
新しいデザイナーで「開始して承認を待機」アクションを開き、承認の種類「承認/拒否 – 最初に応答」・タイトル・割り当て先・詳細が入っている状態
条件アクションの左に「結果」、右に Approve が入り、True と False の分岐にそれぞれ「項目を更新する」と「メールを送信する (V2)」が並んだフロー全体
条件アクションの左に「結果」、右に Approve が入り、True と False の分岐にそれぞれ「項目を更新する」と「メールを送信する (V2)」が並んだフロー全体

手順17の右側は、画面が日本語でも Approve(却下なら Reject)と英語で、大文字小文字も合わせて書きます。ここを「承認」と日本語で書くと、承認されても必ず False 側に進みます。公式のコネクタの日本語ページには有効な値が「承認」「拒否」と書かれていますが、これは英語の原文(Approve と Reject)を訳したもので、フローが返す値は英語のままです。

書き戻しに使う式

「最初に応答」の承認でも、応答は複数人分が入る配列として返ってきます。動的なコンテンツから「応答 コメント」を選ぶと、デザイナーが勝手に「Apply to each」で囲みます。1人分で足りるときは、次の式を使うとループが出ません。

承認者コメント: first(outputs('上長の承認')?['body/responses'])?['comments']
承認者の名前:   first(outputs('上長の承認')?['body/responses'])?['responder/displayName']
承認者のメール: first(outputs('上長の承認')?['body/responses'])?['responder/email']
承認日時:       outputs('上長の承認')?['body/completionDate']

承認者の列(ユーザーまたはグループ)に書き込むときは、列を開いたときに出る「Claims」の付いた欄(表示名は列名によって変わります)に承認者のメールを入れる形になります。承認日時は UTC で返るので、リストの日付列に入れれば表示は日本時間になりますが、メール本文に書くときは convertFromUtc(outputs('上長の承認')?['body/completionDate'], 'Tokyo Standard Time', 'yyyy/MM/dd HH:mm') で日本時間に直します。

承認依頼の詳細欄

「詳細」欄は Markdown で書式を付けられます。承認者がスマホで見たときに一目で判断できるよう、項目ごとに改行します。

- 申請者:(作成者の表示名)
- 種類:(休暇の種類 Value)
- 期間:(開始日)〜(終了日)
- 理由:(理由)

行頭に - を付けると箇条書きとして表示されます。ただの改行だけでは1行につながって表示されることがあるので、箇条書きにするか、行と行の間に空行を入れます。

承認依頼のメールに表示される「作成日」は GMT 固定で変えられません。日本時間で見せたい情報は、詳細欄に自分で書きます。

動かして確かめる

  1. 休暇申請リストで「新規」から申請を1件登録します。
  2. 上長に Teams と Outlook で承認依頼が届くことを確かめます。
  3. 上長の側で「承認」を選び、コメントを入れて「確認」を選びます。
  4. リストの状態が「承認」に変わり、承認者・承認日時・コメントが入ったことを確かめます。
  5. 申請者に承認のメールが届いたことを確かめます。
  6. 同じ手順で却下も1回試します。
Teamsのチャットに届いた承認依頼のカード。タイトル・詳細・「承認」「拒否」ボタンとコメント欄が見えている
Teamsのチャットに届いた承認依頼のカード。タイトル・詳細・「承認」「拒否」ボタンとコメント欄が見えている
休暇申請リストで、状態が「承認」、承認者・承認日時・承認者コメントが書き戻された行
休暇申請リストで、状態が「承認」、承認者・承認日時・承認者コメントが書き戻された行

承認者は、Teams のカード、Outlook のメール、Power Automate の左メニューの「承認」(承認センター)、Power Automate のスマホアプリのどこからでも応答できます。どこで応答しても結果は同じです。

応用:多段承認・差し戻し・代理・期限切れ

多段承認

上長のあとに代表、のように順番に承認を回すときは、承認の種類「順次承認」を使います。「割り当て先 – 1」に上長、「新しい項目の追加」で「割り当て先 – 2」に代表を入れると、上長が承認したら代表へ依頼が進み、途中で誰かが却下すればそこで止まります。同じ人を2つの段に入れることはできません。上長が代表本人の場合(事務の申請など)は、この制限に引っかかるので、条件で「上長が代表なら1段だけ」に分けます。

金額で段数を変える場合は、承認アクションの前に「条件」を置き、「金額が50000以上」の側には順次承認、それ以外には上長1人の承認、と2本に分けます。段ごとに結果を書き戻したい、段ごとに別の通知を出したい、というときは、順次承認ではなく「開始して承認を待機」を2つ並べ、1つ目が Approve のときだけ2つ目に進む形にします。

差し戻し

Power Automate の承認には「差し戻し」という仕組みはありません。作るには次の形にします。

  1. 承認の種類を「カスタム応答 – 1 つの応答を待つ」にし、応答の選択肢に「承認」「差し戻し」「却下」を入れます。
  2. 承認の後に「条件」ではなく「スイッチ」を置き、「結果」で分けます。
  3. 「差し戻し」の分岐で、リストの状態を「差し戻し」にし、承認者のコメント付きで申請者に知らせます。
  4. 申請者は内容を直し、状態を「申請中」に戻して保存します。
  5. トリガーを「アイテムが作成または変更されたとき」に変え、トリガーの「設定」の「トリガー条件」に次の式を入れて、状態が「申請中」のときだけ動くようにします。
@equals(triggerOutputs()?['body/Status/Value'], '申請中')

Status は状態の列の内部の名前です。列を最初から日本語で作った場合は、リストの設定で列を開いたときの URL の末尾(Field= の後ろ)にある名前に置き換えます。トリガー条件を入れないと、フロー自身の「項目を更新する」で再びフローが動き、承認依頼が何通も飛びます。

トリガー「アイテムが作成または変更されたとき」の「設定」タブで、トリガー条件に状態が申請中のときだけ動く式を入れたところ
トリガー「アイテムが作成または変更されたとき」の「設定」タブで、トリガー条件に状態が申請中のときだけ動く式を入れたところ

代理承認

承認者が休みのときの扱いとして公式に載っている手順は、承認者が自分で「再割り当て」する方法です。Power Automate の左メニュー「承認」で依頼にカーソルを合わせ、「…」→「再割り当て」で別の人に回せます。依頼を出した側からは再割り当てできないので、Power Automate の「承認」の「送信」タブで依頼を「キャンセル」してから出し直します(Teams の承認アプリでは同じタブが「送信済み」という名前です)。

実際に運用していると、上長が現場に出て1日承認できない日がよくあります。サンプル工務店では、休暇申請の割り当て先を「上長;代表」の2人にし、種類を「最初に応答」にしています。どちらかが応答すれば進むので、代理を決める手間がいりません。

期限切れ

フローの1回の実行は最長30日で、承認を待っている途中でも30日経つとタイムアウトして失敗になります。休暇の前日まで放置されると困るので、承認アクションに期限を付けます。30日より長く待つ必要があるときは、公式の方法として、承認のデータを Dataverse に保存し、元の実行がタイムアウトしたあとも応答を受けて動く別のフローを作ります。Dataverse を使うので Premium が要ります。Microsoft 365 の範囲で済ませるなら、期限をリストで管理して人が追いかけます。

  1. 「上長の承認」アクションを選び、「設定」タブを開きます。
  2. 「タイムアウト」に P3D(3日)と入れます。
  3. 承認の後に、期限切れのときだけ動くアクションを足します(例:「項目を更新する」で状態を「期限切れ」、申請者と代表へメール)。
  4. そのアクションの「設定」の「実行条件」で、「上長の承認」が「タイムアウトしました」のときだけ動くようにします。

期限切れのあとも依頼が「承認」の「送信」タブに残っている場合は、誤って後から承認されないよう、フローの作成者が「キャンセル」しておきます。

承認の履歴が残る場所

Power Automate の承認は、Dataverse(Microsoft のデータベース)に保存されます。既定の環境であれば Dataverse は自動で用意されるので、Business Standard だけの会社でも何も準備はいりません。既定以外の環境で初めて承認を使うときは、最初に承認フローを動かす人にその環境の管理者ロールが必要で、データベースの準備に数分かかります。

どこ何が残るか期間の目安(2026年10月時点)
Power Automate の左メニュー「承認」受け取った依頼・送った依頼と応答Dataverse に残る。管理者が保持ポリシーを設定できる
フローの実行履歴実行ごとの入力と出力30日
Teams の承認アプリ「受信済み」「送信済み」の依頼既定の環境の Dataverse に残る。バックアップは非対応
SharePoint リスト(自分で書き戻した列)状態・承認者・日時・コメントリストを消さない限り残る
Microsoft Purview の監査ログ承認アプリの作成・承認・却下などの操作監査ログの保持期間による

実行履歴は30日で消えるため、「いつ誰が承認したか」を後から確かめる場所はリストに作っておくのが確実です。Teams の承認アプリで出した依頼は、テンプレートを使った場合、応答の中身が Microsoft Forms 側に保存されます。

できないことと、その代わり

Power Automate の承認は、休暇・経費・購入のような社内の申請を回すには十分です。ただし、次のような承認には向きません。

  • 稟議のように、決裁権限表に沿って金額・部署・案件の種類で承認経路が細かく変わるもの。条件分岐で作れなくはないですが、組織が変わるたびにフローを直すことになり、作った人しか直せなくなります。
  • 承認の記録を改ざんできない形で長期間残し、監査に出す必要があるもの。承認アプリのデータはバックアップに対応しておらず、フローの実行履歴も30日で消えます。
  • 申請画面の入力チェック(必須項目、金額の上限、添付の有無)を細かくかけたいもの。SharePoint リストの標準フォームでは限界があり、Power Apps で画面を作る必要が出ます。
  • 社外の人(協力会社など)に承認してもらうもの。ゲストには Outlook のメールから直接承認するボタンが使えず、Power Automate のポータルに入ってもらう必要があります。

稟議や決裁が会社の基幹の仕事になっているなら、ワークフロー専用のクラウドサービスを入れるほうが、経路の管理も監査対応も楽です。申請と台帳をまとめて管理したい、承認後の案件管理までつなげたい、という場合は kintone のプロセス管理も候補になります。Microsoft 365 の中で入力画面まで作り込みたいなら「Power Appsの使い方:SharePointリストから申請アプリを作る」へ進みます。

よく詰まるところ

症状原因直し方
承認したのに必ず却下側に進む条件の右側を「承認」と日本語で書いているApprove(却下は Reject)と英語で、大文字小文字も合わせる
「マネージャーの取得 (V2)」で失敗する申請者のユーザー情報に上長が登録されていないMicrosoft 365 管理センターで上長を登録するか、承認者を固定にする
「応答 コメント」を入れたら Apply to each で囲まれた応答が配列で返るfirst(...) の式で1人分だけ取り出す
承認依頼が何通も届く「作成または変更されたとき」のトリガーが、フロー自身の更新で再び動くトリガー条件で状態が「申請中」のときだけ動かす
30日経ったフローが失敗になっている実行の上限30日を超えて承認待ちのまま承認アクションに P3D などのタイムアウトを付け、期限切れの分岐を作る
順次承認を保存できない同じ人を複数の段に入れている条件で段数を分ける
承認アプリが Teams に出てこないTeams 管理センターでアプリが無効管理者に「承認」アプリを有効にしてもらう
メールの作成日が9時間ずれて見える承認メールの作成日は GMT 固定詳細欄に convertFromUtc で日本時間を書く
承認者が依頼を開けない承認者が SharePoint のアイテムを見る権限を持っていないリストのアクセス許可に承認者を入れる
協力会社の人がメールから承認できないゲストはメールからの直接承認に非対応Power Automate のポータルで応答してもらうか、社内の担当が代わりに承認する
同じ名前の添付を2つ付けると失敗する承認の添付ファイル名は一意である必要があるファイル名に連番や日時を付ける
作った人が退職したらフローが止まったフローと接続が個人のアカウントに紐づいていた共同所有者を足し、接続を共有アカウントに切り替える

承認依頼のメールには、フローの作成者の名前が必ず表示されます。なりすまし防止のための仕様なので消せません。総務の事務Bが作ったフローなら、承認者には事務Bの名前が見えます。

次にやること

休暇申請の承認が回ったら、同じ形で経費精算や社用車の予約にも広げられます。入力画面をもっと使いやすくしたい場合と、通知の出し方を整えたい場合は、次の記事に進んでください。

あわせて読む