PowerAutomateで配列から文字列をつくりたい

2022/05/29

JSONや配列の要素を連結して文字列にしたいというニーズがあると思います。例えばセミコロンでメールアドレスをつなげてメールの送信先にするとか。

ループで回して文字列に追加する場合

たぶんこれが普通の方法。配列と結果を入れる文字列変数を用意して、Apply to eachで回します。現在のアイテムの後ろにカンマが一つはいっているのがポイントです。ここをセミコロンに変えればメールアドレスの送信先として連結したものが作れて一斉送信などに使えます。

するとこの通り、カンマ区切りで文字列ができました。最後のカンマが邪魔ですが、まあよいでしょう。

ループを使わず強引に文字列化する場合

Apply to eachはどうしても速度が遅くなってしまうので、強引に配列を文字列に変換して、不要なカッコやダブルクォーテーションを取り除いてしまうというのはどうでしょうか?

replace(replace(replace(string(variables('配列')),'[',''),']',''),'"','')

少し強引ですが、string関数を使えば配列を文字列に変換できることがわかりました。そのあとreplace関数で不要なものを消し去っています。ちゃんと目的は果たせそうです。

結合を使う場合

と、ここまでいろいろやってみたけれど、実は「結合」をつかうのが本来の正攻法ではなかろうか?無茶苦茶簡単だけれど、いままで気が付いていなかった。

結合の「次を使用して結合」に、カンマとかセミコロンを指定するだけでOK! 変数に入れても、出力結果をそのままつかってもヨシ!

他にもちょっとしたPowerAutomateの小技を集めて書き溜めていますのでこちらからご覧ください。