もやしさん家のもやもやな生活

育児とキャンプとキャンピングトレーラーのブログ♪

Microsoft Formsで入力した長文テキストを、改行ありのままメール送信したい

久しぶりのコンピューターカテゴリ記事です。
うちのメンバーに発注していた仕事の中で「Microsoft Formsで入力されたWebアンケート結果を、メールで受け取る」というワークフローの中で納得できない動きをしていたので週末に調べていました。

ちなみに、Webアンケートを無料で作成するとなると、Microsoft FormsGoogleフォームの2択です。両方とも実際に運用していますが、無料の範囲ではそこまで大きな差が無いので自分が使いやすいほうを選択すればいいと思います(僕は、開発者ライセンスを持っている関係でMSモノを使うことが多いです。開発しないんですけどね)。

 

 

納得できない動き(メール時に改行が無視される)

Microsoft Formsで入力があると(いろいろ処理した結果)メールで通知してくれるワークフローを設けました。中間の処理は今回の話の外なのでおいておくとして、以下のようにFormsに入力されたテキストをメールすると・・・
f:id:moyashinet:20200517214431p:plain

届くメールには改行部分が無視されて、横に長いテキストになっちゃいます。
ちょっと・・・カッコワルイですね。

f:id:moyashinet:20200517214457p:plain

(解答)改行ありのFormsテキストを、改行ありのままメールするには

今回はオーソドックスに「Formsで受け取った改行コード」を「HTMLのBRタグに置換する」方法で対処してみました(答えが分かると簡単なように聞こえるね…)。

まずは基本のFlow(今はPower Automateですね)はこちら。
メールの作成時は、本文に動的なコンテンツとして「Formsで入力された値」をセットしています。
f:id:moyashinet:20200517215716p:plain

このFlowで返されるメールは、先の通り改行されません。
f:id:moyashinet:20200517214457p:plain

そこで「Formsで入力された値」の内容をいじるために、コピーして・・・

f:id:moyashinet:20200517215929p:plain

メモ帳に貼り付けます。すると、こんな感じの形式になっていますので、冒頭の@と中カッコ囲みを削除します。
f:id:moyashinet:20200517220025p:plain

Power Automateに戻り、本文に入力する値を「式」に変更して、変換式を入力します。
f:id:moyashinet:20200517220304p:plain

式は3つの関数を組み合わせて記述します。
まずuriComponent関数で、先ほどコピーしたFormsの入力値をURIエンコードし(赤文字部分)、replace関数でHTMLの改行タグに置き換え(青文字部分)、uriComponentToString関数で文字列にデコードして返します(緑文字部分)。

f:id:moyashinet:20200517220212p:plain

uriComponentToString(replace(uriComponent(Formsの文字列,'%0A','<br>'))

セット完了。

f:id:moyashinet:20200517221131p:plain

メール送信結果

Power Automateから保存&テストで再実行すると、ちゃんとFormsで入力した通りの改行あり状態でメールされるようになりました。
f:id:moyashinet:20200517221153p:plain

今回は、Power Automate内で、動的なコンテンツを式で操作する方法が分からずに時間を費やしてしまいました(まさかコピペすれば良いだけだったとは…)。
とはいえまぁこの方法が見つけられたので、コレに限らずPower Automate内でできる幅がかなり増えたこともまた事実で、たまには実務を触ってみるのも良いものだなぁ~と感じています( *´艸`)