ADVERTISEMENT

【Power Automate】空白や改行を整形したい場合の式確認

【Power Automate】空白や改行を整形したい場合の式確認
🛡️ 超解決

Power Automateでデータを扱っていると、思わぬ場所に空白や改行が含まれていて、思うように処理が進まないことはありませんか。たとえば、CSVファイルから取り込んだデータに余計なスペースが付いていたり、メール本文に不要な改行が混ざっていたりするケースです。こうした文字列の余分な要素は、フローの実行結果に悪影響を与えることがあります。この記事では、Power Automateで空白や改行を整形するための式を具体的に確認していきます。実際の関数の使い方や、よくある失敗パターンもあわせて解説しますので、ぜひ参考にしてください。

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

  • 最初に見る場所: 使用する式の種類(trim、replace、split/join)とその動作
  • 切り分けの軸: 空白のみか、改行のみか、あるいはその両方か。全角・半角の区別。改行コード(CR、LF、CRLF)の違い
  • 注意点: 式の適用範囲(文字列全体か部分か)、改行コードの種類、正規表現を使う場合のエスケープ、会社PCで共有フローを編集する際の注意

ADVERTISEMENT

Power Automateで扱う空白と改行の基本

Power Automateの式は、主に「式」タブで関数を使って記述します。空白や改行を整形するために、よく使う関数はtrim()replace()split()join()の組み合わせなどです。まずはそれぞれの関数が何をするのかを整理しましょう。

関数 動作 使用例
trim() 文字列の先頭と末尾の空白(半角スペース、タブ、改行など)を削除。ただし、文字列内部の空白は削除しない。 trim(' abc ')'abc'
replace() 指定した文字列を別の文字列に置き換える。空白や改行を空文字に置き換えることで削除できる。 replace('a b c', ' ', '')'abc'
split() + join() split()で区切り文字で分割し、join()で結合する。改行で分割して不要な行を除外するなどに使う。 join(split('a\nb\nc', '\n'), ',')'a,b,c'

これらの関数を組み合わせることで、複雑な整形も可能です。ただし、改行コードには3種類(CR: \r、LF: \n、CRLF: \r\n)があり、入力データによってコードが異なることに注意してください。Windows環境ではCRLFが標準ですが、Power Automateの式ではLFを\n、CRを\rと表現します。

空白を削除する式の具体例

空白の削除には主にtrim()replace()を使います。それぞれの用途を見ていきましょう。

先頭と末尾の空白を削除する:trim()

最も簡単なのはtrim()関数です。先頭と末尾の半角スペース、タブ、改行をすべて削除します。たとえば、変数text' Hello World\n 'が入っている場合、trim(text)とすると'Hello World'になります。内部の空白はそのまま残ります。

すべての空白を削除する:replace()

文字列中のすべての半角スペースを削除したい場合は、replace()を使います。replace(text, ' ', '')で、すべての半角スペースが空文字に置き換わります。全角スペース(' ')は別の文字として扱われるため、全角も削除するにはreplace(text, ' ', '')を別途実行するか、あるいはreplace(replace(text, ' ', ''), ' ', '')のように入れ子にします。

正規表現で空白を削除する方法

Power Automateの標準関数では正規表現を直接使えませんが、代替としてreplace()?のようなパターンは使えません。代わりに、複数のreplace()を組み合わせるか、Office ScriptやAzure Functionを使う方法があります。ただし、式だけでは正規表現はサポートされていないため、高度なパターンが必要な場合は外部サービスを検討してください。

改行を削除・追加する式の具体例

改行の整形はreplace()split()/join()が中心になります。

改行を削除する:replace()

改行コードを削除するには、replace()で空文字に置き換えます。ただし、改行コードの種類を考慮する必要があります。たとえば、replace(text, '\n', '')はLFのみを削除します。CRLFを削除するにはreplace(text, '\r\n', '')、CRのみはreplace(text, '\r', '')です。複数の改行コードが混在する場合は、まずreplace(text, '\r\n', '\n')でCRLFをLFに統一してから削除する方法が安全です。

改行を追加する:replace()やjoin()

改行を追加したい場合は、特定の区切り文字を改行に置き換えます。たとえば、カンマ区切りのデータを改行区切りに変更するなら、replace(text, ',', '\n')とします。また、split()join()を使えば、改行で分割してから別の文字で結合することも可能です。

実践的な整形例:よくあるシチュエーション

ここからは、実際の業務で遭遇しやすいケースを想定して、整形の式を紹介します。

  1. CSVの余分なスペースを削除する
    CSVから読み込んだ各行に余分な空白が含まれる場合、trim()を各フィールドに適用します。ただし、Power AutomateでCSVを解析する際は、自動的にtrimが適用されないことがあるため、後処理としてtrim(variables('csvLine'))のようにします。
  2. メール本文の不要な改行を削除する
    メールのテキストボディに多数の改行が含まれる場合、replace(replace(body, '\r\n', ' '), '\n', ' ')のようにすべての改行をスペースに置き換えてから、さらに連続するスペースをreplace(prevOutput, ' ', ' ')で縮める方法があります。
  3. 改行を特定の区切り文字に変換する
    複数行のテキストを1行のカンマ区切りに変換するには、join(split(variables('multilineText'), '\n'), ',')とします。ただし、最後の改行に注意してください。
  4. 全角スペースを除去してデータを統一する
    全角スペースが混入している場合は、replace(variables('data'), '\u3000', '')と記述します。全角スペースのUnicodeは\u3000です。
  5. 文字列の先頭と末尾の改行だけを削除する
    trim()は改行も削除します。したがって、trim(text)で十分です。ただし、内部の改行は残ります。

失敗パターンと注意点

実際にフローを組む際に陥りやすい失敗をいくつか挙げます。

  • 改行コードを間違える
    データによって改行コードが異なるため、replace(text, '\n', '')だけではCRLFが削除されず、見た目上改行が残ります。最初にreplace(text, '\r\n', '\n')で統一するクセをつけましょう。
  • 全角スペースを見落とす
    半角スペースのみを削除しても、全角スペースが残ってしまいます。特にユーザー入力データでは全角スペースが入りがちです。replace(replace(text, ' ', ''), ' ', '')として両方を処理しましょう。
  • trim()の動作を誤解する
    trim()は先頭と末尾の空白だけを削除するため、内部の空白には影響しません。「すべての空白を削除したい」のにtrim()だけを使ってしまうと、データ内のスペースが残ります。
  • 式の入れ子が複雑になりすぎる
    複数のreplaceを入れ子にすると式が読みにくくなります。必要に応じて変数に中間結果を格納するなど、フローを分割するのも検討してください。

管理者に伝えるべき点として、共有フローの中でこれらの式を編集する場合は、テスト環境で動作確認を行ってから本番に反映してください。また、改行コードの違いはテナントやデータソースに依存するため、事前にデータの特性を確認しておくことが重要です。

よくある質問

ここでは、空白や改行の整形に関するよくある質問をまとめました。

  1. Q: 改行コードがCRLFかLFかわかりません。どうすればよいですか?
    A: 最初にreplace(text, '\r\n', '\n')を実行してCRLFをLFに統一し、その後replace(text, '\n', '')で削除するか、split(text, '\n')で分割すれば、CRLFもLFとして扱われます。
  2. Q: 複数の連続する空白を1つの空白に置き換えたいです。
    A: replace()では連続する空白を一度に処理できません。代わりにループを使うか、Office Scriptで正規表現を使う方法があります。Power Automate単体では、replace(replace(text, ' ', ' '), ' ', ' ')のような方法を繰り返す必要がありますが、実用的ではありません。
  3. Q: 空白や改行の削除がうまくいかない場合、どこを確認すればよいですか?
    A: まず、length()関数で文字列の長さを確認し、元データに目に見えない文字(タブやNBSPなど)が含まれていないかチェックします。また、式のデバッグとして、outputs('Compose')の中間結果を確認しながら進めると原因を特定しやすくなります。
  4. Q: 全角改行(
    ?)はありますか?

    A: 改行コードに全角半角の区別はありません。すべてASCII制御文字です。全角スペースとは異なり、改行は半角扱いです。

まとめ

Power Automateで空白や改行を整形するには、目的に応じてtrim()replace()split()/join()を使い分けることが基本です。最初にデータの改行コードを統一し、全角スペースの有無を確認することで、失敗を減らせます。また、複雑な整形が必要な場合は式を分割してテストしながら進めてください。この記事で紹介した式を参考に、フローのデータ整形を効率的に行いましょう。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT