2025.07.14
PowerAutomateでHTML中の文字列をindexOf関数で検索する際のTips
PowerAutomateを用いた受信したメールの自動処理では、受信したHTML形式のメールの本文から
特定の箇所の文字列を条件にする、という要件が発生しやすいと思います。
よくとられる方法として、一旦HTMLをプレーンテキストに変換したものを検索対象として取り扱うと
思いますが、この際に<br>タグは改行コード「\n」に変換されるかと思います。
そうしたなかで、「\n」は、indexOf関数など文字列を取り扱う関数ではうまく取り扱えないため、
下記のような工夫で回避することを考えてみます。
場面として、改行まで含めた文字列を条件とすることは多くはないかもしれませんが、たとえば
もともと表組だったHTMLテーブルの、途中のカラムがブランクであるものを探す、という場合には
テキスト変換時に「\n」が挟まってきますので、この方法が有効になってくると考えます。
例として、「autonomous\n\n \n\n」と表組がテキストに変換されている文字列をテキスト中から
検索するとします。
そこで下記のように「\n」をindexOf関数の第2パラメタにべた書きすると、ヒットしません。
indexOf(‘コラムautonomous\n\n \n\nテスト’, ‘autonomous\n\n \n\n’)
これを回避するために新たにdecodeUriComponent関数を使います。この関数で改行の文字コードを
指定するとうまくヒットするようになりますので、下記のように式を書き換えます(文字連結についても
concat関数で行う必要があります)。
indexOf(‘コラムautonomous\n\n \n\nテスト’, concat(‘autonomous’,decodeUriComponent(‘%0A’),decodeUriComponent(‘%0A’),’ ‘,decodeUriComponent(‘%0A’),decodeUriComponent(‘%0A’)))
一部抜き出すと下記のようなかたちです。
‘autonomous\n\n \n\n’
↓
concat(‘autonomous’,decodeUriComponent(‘%0A’),decodeUriComponent(‘%0A’),’ ‘,decodeUriComponent(‘%0A’),decodeUriComponent(‘%0A’))
%0Aはラインフィード(LF)文字で、「\n」に相当します。
これで、もともとHTMLでは<br>だったものがテキストとして\nに置き替えられている文字も検索可能となります。
