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でできるよ!
Add to your blog post two more ideas.
— John Liu 劉 #BlackLivesMatter✊ (@johnnliu) February 8, 2020
1. create a Compose and <enter> a new line
2. use decodeUriComponent with %0A = 10. \n is character 10. May be easier to remember than Cg==
Second picture is peek code of #1@8bitclassroom pic.twitter.com/Q1tdqnRZPM