---
title: "Power Automateで「終了（Terminate）」アクションを活用する方法"
url: "https://www.geekfujiwara.com/tech/powerplatform/7006/"
author: ギークフジワラ
published: "2025-06-04T01:55:18+00:00"
updated: "2026-11-06T12:58:26+00:00"
categories: [Power Platform]
tags: [Power Automate, エラー処理, クラウドフロー, スコープ]
description: "Power Automate の「終了（Terminate）」アクションで、フローの最後の状態（成功・失敗・取り消し）を決める方法です。想定内のエラーを「成功」で終える使い方と、Try / Catch で本当のエラーを「失敗」として理由を残す使い方を図解します。"
---

# Power Automateで「終了（Terminate）」アクションを活用する方法

> [!NOTE] 2026 年 11 月 6 日に更新しました
> 2 つの使い方の図、終了アクションで選べる状態、Try / Catch のスコープと組み合わせる使い方を加えました。

Power Automate でフローの最後の状態（成功・失敗）を思いどおりに決めるのに便利なアクション、「**終了（Terminate）**」を紹介します。

### こちらもどうぞ

https://www.geekfujiwara.com/tech/powerplatform/7180/

## 「終了（Terminate）」アクションとは

「コントロール」の中にある「終了（Terminate）」は、**フローの途中で処理を止め、フロー全体の状態を決める**アクションです。

| 選べる状態 | 使いどころ |
| --- | --- |
| **成功（Succeeded）** | 想定内のエラーが出ても、フローは成功として終える |
| **失敗（Failed）** | 本当のエラーで止める。**コード**と**メッセージ**を入れて、理由を実行履歴に残せる |
| **取り消し（Cancelled）** | 続ける必要がなくなったときに止める |

公式のガイドでも、重大なエラーのときは終了アクションで止め、状態とメッセージを入れて、あとで理由が分かるようにすることが勧められています（[Employ robust error handling](https://learn.microsoft.com/power-automate/guidance/coding-guidelines/error-handling)）。

## 2 つの使い方

:::raw
<figure class="wp-block-image" style="margin:1.5rem 0">
<div style="overflow-x:auto;-webkit-overflow-scrolling:touch">
<svg viewBox="0 0 1000 380" width="100%" role="img" aria-label="終了アクションの 2 つの使い方。パターン 1：Apply to each の中で想定内のエラーが出たら、ループの外に置いた終了アクションを、直前が失敗したときに実行し、状態を成功にしてフローを成功で終える。パターン 2：Try スコープが失敗したら Catch スコープでエラーを記録して通知し、終了アクションで状態を失敗にしてコードとメッセージを残す。" style="font-family:inherit;min-width:760px;height:auto;display:block">
<defs><marker id="g7006a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M0 0L10 5L0 10z" fill="#64748b"/></marker></defs>
<text x="20" y="30" font-size="17" font-weight="700" style="fill:var(--g-heading,#1f2636)">「終了（Terminate）」の 2 つの使い方</text>
<text x="20" y="66" font-size="13" font-weight="700" fill="#0d9488">パターン 1：想定内のエラーなら「成功」で終える（この記事の例）</text>
<rect x="20" y="80" width="280" height="86" rx="12" style="fill:var(--g-surface,#fff)" stroke="#4f46e5" stroke-width="2"/>
<text x="36" y="108" font-size="14" font-weight="700" style="fill:var(--g-heading,#1f2636)">Apply to each（繰り返し）</text>
<text x="36" y="130" font-size="12" style="fill:var(--g-muted,#5d6679)">一部の項目で、想定内の</text>
<text x="36" y="148" font-size="12" style="fill:var(--g-muted,#5d6679)">エラーが出ることがある</text>
<rect x="380" y="80" width="280" height="86" rx="12" fill="#0d9488" fill-opacity=".1" stroke="#0d9488" stroke-width="2"/>
<text x="396" y="108" font-size="14" font-weight="700" style="fill:var(--g-heading,#1f2636)">終了：状態「成功」</text>
<text x="396" y="130" font-size="12" style="fill:var(--g-muted,#5d6679)">ループの外に置く</text>
<text x="396" y="148" font-size="12" style="fill:var(--g-muted,#5d6679)">実行条件「失敗した場合」</text>
<rect x="740" y="80" width="240" height="86" rx="12" style="fill:var(--g-surface,#fff)" stroke="#0d9488" stroke-width="2"/>
<text x="756" y="108" font-size="14" font-weight="700" style="fill:var(--g-heading,#1f2636)">フローは「成功」</text>
<text x="756" y="130" font-size="12" style="fill:var(--g-muted,#5d6679)">実行履歴が赤くならず</text>
<text x="756" y="148" font-size="12" style="fill:var(--g-muted,#5d6679)">あとで見返しやすい</text>
<line x1="302" y1="123" x2="376" y2="123" stroke="#d97706" stroke-width="2" marker-end="url(#g7006a)"/>
<text x="339" y="115" text-anchor="middle" font-size="11" font-weight="700" fill="#d97706">失敗したら</text>
<line x1="662" y1="123" x2="736" y2="123" stroke="#64748b" stroke-width="2" marker-end="url(#g7006a)"/>
<line x1="20" y1="192" x2="980" y2="192" style="stroke:var(--g-line,#e5e7eb)" stroke-dasharray="4 4"/>
<text x="20" y="222" font-size="13" font-weight="700" fill="#dc2626">パターン 2：本当のエラーは「失敗」で止め、理由を残す（Try / Catch）</text>
<rect x="20" y="236" width="220" height="96" rx="12" style="fill:var(--g-surface,#fff)" stroke="#4f46e5" stroke-width="2"/>
<text x="36" y="264" font-size="14" font-weight="700" style="fill:var(--g-heading,#1f2636)">Try スコープ</text>
<text x="36" y="286" font-size="12" style="fill:var(--g-muted,#5d6679)">本来の処理をまとめる</text>
<rect x="300" y="236" width="240" height="96" rx="12" style="fill:var(--g-surface,#fff)" stroke="#d97706" stroke-width="2"/>
<text x="316" y="264" font-size="14" font-weight="700" style="fill:var(--g-heading,#1f2636)">Catch スコープ</text>
<text x="316" y="286" font-size="12" style="fill:var(--g-muted,#5d6679)">実行条件「失敗した場合」</text>
<text x="316" y="304" font-size="12" style="fill:var(--g-muted,#5d6679)">エラーを記録・通知する</text>
<rect x="600" y="236" width="380" height="96" rx="12" fill="#dc2626" fill-opacity=".1" stroke="#dc2626" stroke-width="2"/>
<text x="616" y="264" font-size="14" font-weight="700" style="fill:var(--g-heading,#1f2636)">終了：状態「失敗」</text>
<text x="616" y="286" font-size="12" style="fill:var(--g-muted,#5d6679)">コードとメッセージを入れる</text>
<text x="616" y="304" font-size="12" style="fill:var(--g-muted,#5d6679)">例：ERR_NO_FILE「ファイルがありません」</text>
<text x="616" y="322" font-size="12" style="fill:var(--g-muted,#5d6679)">→ 実行履歴に理由が残る</text>
<line x1="242" y1="284" x2="296" y2="284" stroke="#d97706" stroke-width="2" marker-end="url(#g7006a)"/>
<text x="269" y="276" text-anchor="middle" font-size="11" font-weight="700" fill="#d97706">失敗したら</text>
<line x1="542" y1="284" x2="596" y2="284" stroke="#64748b" stroke-width="2" marker-end="url(#g7006a)"/>
<text x="20" y="362" font-size="12" style="fill:var(--g-muted,#5d6679)">※ 終了は、Apply to each や Do until の中には置けません。スコープや条件の中には置けます。</text>
</svg>
</div>
<figcaption>想定内のエラーは「成功」、本当のエラーは「失敗」で理由を残す</figcaption>
</figure>
:::

## パターン 1：想定内のエラーなら「成功」で終える

たとえば、繰り返し（Apply to each）の中で、いくつかの項目は成功し、いくつかは失敗したとします。失敗が「想定内のエラー」なら、フロー全体を失敗にはしたくありません。

![](https://www.geekfujiwara.com/wp-content/uploads/2025/06/image-1024x511.png)

このようなときに、終了アクションを次のように置きます。

{.steps}
1. **繰り返しの外に終了アクションを置く**：Apply to each の中には置けません（保存のときにエラーになります）。
2. **終了アクションの状態を「成功（Succeeded）」にする**：これで、フロー全体が成功になります。
3. **実行条件を「直前の処理が失敗した場合」にする**：想定内のエラーが出たときだけ、終了アクションが動きます。

![](https://www.geekfujiwara.com/wp-content/uploads/2025/06/image-3-1024x764.png)

![](https://www.geekfujiwara.com/wp-content/uploads/2025/06/image-4.png)

フローが「失敗」として記録されると、あとで実行履歴を見返したり分析したりするのが大変になります。**想定内のエラーは「成功」で終える**ことで、本当に見るべき失敗だけが残り、運用が楽になります。

![](https://www.geekfujiwara.com/wp-content/uploads/2025/06/image-1-1024x511.png)

## パターン 2：本当のエラーは「失敗」で止め、理由を残す

本当のエラーは、逆に「失敗」としてはっきり残したいものです。このときは、**スコープ**で Try / Catch の形を作ると分かりやすくなります（[Use scopes to organize actions](https://learn.microsoft.com/power-automate/scopes)）。

{.steps}
1. 本来の処理を「**Try**」という名前のスコープにまとめます。
2. その下に「**Catch**」のスコープを作り、実行条件を「Try が失敗した場合」にします。
3. Catch の中で、エラーを記録したり、担当者に通知したりします。`result('Try')` で、Try の中のどのアクションが失敗したかを取り出せます。
4. 最後に終了アクションを置き、状態を「**失敗**」にして、**コード**と**メッセージ**を入れます。

こうしておくと、実行履歴を開いたときに、なぜ止まったのかがすぐに分かります。

> [!TIP]
> 一時的な通信のエラーなら、終了で止める前に、アクションの設定の**再試行のポリシー**（指数間隔がおすすめ）で回復できることもあります。

## まとめ

{.check}
- 終了アクションで、フローの最後の状態を**成功・失敗・取り消し**から選べます。
- 想定内のエラーは「成功」で終え、本当のエラーは「失敗」にして**コードとメッセージ**を残します。
- 終了は繰り返しの中には置けません。スコープや条件の中には置けます。

ぜひ、皆さんのフローにも取り入れてみてください。
