ADVERTISEMENT

【Power Automate】メール本文のHTMLタグを消したい時の整形手順

【Power Automate】メール本文のHTMLタグを消したい時の整形手順
🛡️ 超解決

Power Automateでメール処理を自動化する際、受信したメール本文がHTML形式であることはよくあります。HTMLタグが含まれたままでは、後続の処理でテキストとして利用しづらく、データベースへの格納や通知文への埋め込みに支障をきたします。本記事では、Power Automateのフロー内でHTMLタグを除去し、プレーンテキストに整形する具体的な手順を解説します。基本的な方法から応用的な対処法、よくある失敗とその回避策まで、実務に即した内容を網羅します。

【要点】この記事で確認すること

  • 最初に見る場所: フロー内でHTMLタグを除去するには、組み込み関数removeHtmlTagsを使用します。まずはこの関数の動作を確認しましょう。
  • 切り分けの軸: タグ除去後の改行保持の有無、HTMLエンティティ( など)の変換、処理対象のメール量によって最適な方法が変わります。
  • 注意点: 会社のポリシーでカスタムコネクタやサードパーティサービスが制限されている場合があります。組み込み関数で対応できないときは管理者に確認してください。

ADVERTISEMENT

1. 組み込み関数「removeHtmlTags」を使った基本的な方法

Power Automateには、文字列からHTMLタグを削除するための式関数removeHtmlTagsが用意されています。この関数は、引数に指定した文字列内のすべてのHTMLタグを除去し、タグの中身(テキスト)だけを返します。ただし、<br>タグなどは改行に変換されず、単に削除されるため、結果として改行が失われる点に注意が必要です。

基本的なフローの作成手順

  1. Power Automateで新しいフローを作成し、トリガーとして「新しいメールが届いたとき」(Outlook)などを追加します。
  2. 「変数を初期化する」アクションを追加し、メール本文を格納する変数(例:emailBody)を作成します。種類は「文字列」、値はトリガー出力の「Body」を指定します。
  3. 「作成」アクションを追加し、入力フィールドに以下の式を記述します。
    removeHtmlTags(variables('emailBody'))
  4. 「作成」アクションの出力を後続の処理(データベースへの挿入やファイル出力など)で使用します。
  5. フローを保存してテスト実行し、HTMLタグが除去されていることを確認します。

この方法はシンプルで高速ですが、改行やHTMLエンティティがそのまま残る可能性があります。次のセクションでそれらの対処法を説明します。

2. タグ除去後の改行を保持する方法

removeHtmlTagsでは改行タグが削除されてしまうため、メールの段落構造が失われます。改行を維持したい場合は、事前に<br><p>などのタグを改行文字に置き換えてから除去する必要があります。

置換と除去を組み合わせた手順

  1. 変数にメール本文を格納します。
  2. 「作成」アクションで、以下の式を使用して<br>を改行に置き換えます。
    replace(variables('emailBody'), '<br>', '\n')
    さらに<p>がある場合は、replace(replace(...), '</p>', '\n')のように入れ子にします。
  3. 別の「作成」アクションで、置換後の文字列に対してremoveHtmlTagsを適用します。
  4. 必要に応じて連続する改行を1つにまとめるには、正規表現を使うか、replaceを繰り返します。
  5. 出力を後続の処理で利用します。

この方法なら、HTMLタグが除去されつつ、適切な位置に改行が残るため、読みやすいテキストになります。ただし、HTMLの構造が複雑な場合にはすべてのタグを網羅できないこともあるため、ある程度のテストが必要です。

3. HTMLエンティティも同時に変換する方法

HTMLには&nbsp;(非改行スペース)や&amp;(&記号)などのエンティティが含まれることがあります。removeHtmlTagsはこれらを変換しないため、プレーンテキストにしても「&nbsp;」という文字列が残ります。これを本来の文字に変換するには、replace関数で置き換えるか、サードパーティのコネクタを利用します。

エンティティ変換の実装例

  1. メール本文を変数に格納します。
  2. 「作成」アクションで、代表的なエンティティを置換します。
    例:replace(replace(variables('emailBody'), '&nbsp;', ' '), '&amp;', '&')
  3. 置換後の文字列にremoveHtmlTagsを適用します。
  4. 変換が必要なエンティティが多い場合は、複数のreplaceを入れ子にするか、JSONやループを使って一括処理します。
  5. 代替方法として、HTML to Textコネクタ(例:Plumsail HTML to Text)を使用すると、エンティティ変換とタグ除去を自動で行えますが、ライセンスやクラウドポリシーの制約が発生します。

エンティティの完全な変換は手間がかかるため、頻繁に使用する場合はカスタム関数や外部サービスを検討しましょう。

4. 状況別の方法比較と選択基準

方法 特徴 メリット デメリット 推奨シーン
removeHtmlTags単体 標準関数で手軽 コード不要、処理が速い 改行消失、エンティティ未変換 簡易なテキスト抽出、改行不要
置換+removeHtmlTags 改行やエンティティを手動対処 柔軟にカスタマイズ可能 複雑なタグに対応しきれない 構造が単純なHTMLメール
サードパーティコネクタ 専用の外部サービス利用 高精度変換、多機能 コスト、ポリシー制限、依存 大量処理・複雑HTMLで信頼性重視

上表を参考に、自社の環境と要件に合った方法を選んでください。多くの会社では、まず組み込み関数で試し、問題があれば置換を追加するアプローチが現実的です。

5. よくある失敗パターンと対処法

HTMLタグ除去処理では、以下のような失敗が発生しやすいです。事前に把握して対策しましょう。

  • 改行がなくなって1行になる: removeHtmlTagsは改行タグを削除します。事前に<br><p>を改行文字に置換してください。
  • HTMLエンティティがそのまま残る: 特に&nbsp;が空白にならず「&nbsp;」と表示されます。これはreplaceで個別に置換するか、専用関数を実装します。
  • マルチバイト文字が文字化けする: フロー内の文字コード設定が原因の場合があります。Power AutomateはデフォルトでUTF-8のため、通常は問題ありませんが、古いOutlookメールなどで異なるエンコーディングの場合は変換が必要です。その場合は、Base64デコード等の処理を組み合わせます。
  • ネストの深いタグが正しく除去されない: 手動の置換では再帰的な処理が難しいため、複雑なHTMLはサードパーティコネクタの利用を検討します。
  • フローの実行時間が長い(タイムアウト): 大量のメールを処理する際、replaceの入れ子が多いと処理が遅くなります。可能な限り簡潔な式にするか、コネクタに任せましょう。

これらの失敗を防ぐために、必ずテスト用のメールで動作確認を行ってから本番運用に移行してください。

6. 管理者に確認すべき設定

Power Automateの環境によっては、サードパーティコネクタの使用が制限されている場合があります。また、カスタムコネクタを利用するには管理者の承認が必要です。以下の点を管理者に確認してください。

  • サードパーティのHTML変換コネクタ(例:Plumsail HTML to Text)が組織のデータポリシーで許可されているか。
  • プレミアムコネクタ(有料ライセンス)が必要な場合、予算とライセンスの手配が可能か。
  • Power Automateのデータ損失防止(DLP)ポリシーで、HTTPコネクタやカスタムコネクタがブロックされていないか。
  • 大量のメール処理を行う場合、API呼び出し制限(コネクタごとの1時間あたりのリクエスト数)に抵触しないか。

管理者と事前に相談することで、後々のトラブルを回避できます。

7. よくある質問(FAQ)

  • Q. removeHtmlTags関数で改行が消えるのはなぜですか?
    A. この関数はHTMLタグを単に削除するため、<br>も削除対象となり、改行が失われます。改行を保持したい場合は事前に置換してください。
  • Q. HTMLエンティティ(&nbsp;など)もまとめて変換する方法はありますか?
    A. 標準機能では1つずつreplaceする必要があります。一括変換には、サードパーティのコネクタやAzure Functionsを利用する方法があります。
  • Q. ループ内で100件以上のメールを処理するとき、パフォーマンスはどうなりますか?
    A. 組み込み関数のremoveHtmlTagsは高速ですが、replaceを多用すると処理時間が増加します。並列処理を有効にする、またはコネクタを使用して外部で変換することを検討してください。
  • Q. 会社のポリシーでサードパーティコネクタが使えません。代替案は?
    A. replaceとremoveHtmlTagsの組み合わせで対応するか、SharePointリストやExcelにHTMLを保存して別のプロセスで変換する方法を検討します。Azure Functionsを自社でホストする手もあります。

まとめ

Power Automateでメール本文のHTMLタグを除去するには、組み込みのremoveHtmlTags関数が最も手軽です。ただし、改行やHTMLエンティティの扱いには注意が必要で、必要に応じてreplace関数を組み合わせることで実用的なテキスト整形が可能です。複雑なHTMLや大量処理にはサードパーティコネクタの利用も選択肢に入れましょう。いずれの方法を選ぶ場合も、実際のメールでテストし、期待通りの結果が得られることを確認してから本番適用することをおすすめします。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT