Power Automateで文字列から配列に変換する

2022/08/06

文字列から必要な部分を抜き取ってデータ化したいというニーズに対応しましょう。

文字列変数として、カンマで区切られたメールアドレスを用意してみました。この状態だと文字列でしかないので、カンマで分割してやる必要があります。

Split関数をつかう

区切り文字をつかって分割した結果を配列にするには、Split関数を使いましょう。使い方は簡単で、第1引数に分割したい文字列、第2引数に区切り文字を入れるだけです。

split(variables('カンマで区切られた文字列'),',')

これを実行すると、結果として配列が取得できます。

あとは、この配列をApply to Eachなどを使ってメールやTeamsチャットの送信に使えます。3名それぞれにチャットを送信するなら、以下のようにします。

一人ずつメッセージも変えたい

これだとシンプルすぎるので、こんな文字列だとどうでしょう?メッセージも人によって分けてみました。各ユーザーの区切りはセミコロンを使っています。

aaa@example.com,おはよう;bbb@example.com,こんにちは;

まずはセミコロンで分割します。

split(variables('カンマで区切られた文字列'),';')

結果をみてみると、ユーザーが一塊の配列として分けられました。

Apply to Eachでループさせてみると、ユーザーとメッセージが一塊になった配列になりました。その結果をさらにメールアドレスとメッセージの2つにカンマで分けます。作成2の中身に入っている関数は以下の通りです。

split(items('Apply_to_each'),',')

うまくいきましたが、もともとの文字列は2人目の後ろにもセミコロンがあったので、3つめの配列の中身が空になっていまいました。

これだとメール送信時にエラーになるので、条件で中身がある場合のみ送信するように変更しました。

作成2にはメールとメッセージが一組の配列になっています。配列は順番を数字で選択して取り出すことができます。今回の場合1つめ(配列では0番)がメールアドレス、2つめ(配列では1番)がメッセージですので、Teams送信の送信先とメッセージには以下の式をそれぞれ設定します。作成の結果はOutputsで取り出せるのがポイントです。

outputs('作成_2')?[0]
outputs('作成_2')?[1]

文字列から配列化、配列から欲しい列番号の文字列を再度取り出して利用することができました!

Power Automateの逆引き辞典

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