かれ4

かれこれ4個目のブログ

Power Automate (旧称: Microsoft Flow) 、Logic Appsで文字列を改行区切りしてArray 変数に入れる方法

Power Automate, Logic Appsでメールの本文から何かを抽出したいときなど、とりあえず改行区切りで文字列を分割したくなります。

けど、標準のアクションにそんな都合の良いものはなく、組み込みの関数ではsplitがありはするものの、 区切り文字に \n を指定してもうまく文字列が分割されません。

split({動的なコンテンツ}, '\n' )

↑これではうまくいかない

split({動的なコンテンツ}, "\n")

↑これでは構文エラー

うまく改行で区切りたい場合は splitでの区切り文字のところに、 改行コードをBase64エンコードされたもの(Cg==)を、 decodeBase64でデコードして指定する事で、文字列を分割することができます。

split({動的なコンテンツ},decodeBase64('Cg=='))

↑これならうまくいく

サンプルとして、 マネックス証券の約定アラートメールで試してみます。

↓こんな文面

約定アラートメールです。

[銘柄]
三井造船(7003)

[注文内容]
日時 19日13:03
No. 1
売買 買い
区分 現物
価格 237円
株数 1,000株

[約定結果]
日時 19日13:03
価格 237円
株数 1,000株
金額 237,000円

詳細はWEBを
ご覧ください。

マネックス証券
http://www.monex.co.jp/

分割できた様子
分割できた様子

何もない行は飛ばされてしまいますが、 無事に改行で区切ってArrayに入れることができました。

追記

Twitterで別の方法を教えてもらいました。

decodeBase64ではなく、 decodeUriComponentを使えば、Cg== よりも覚えやすい、%0Aでできるよ!