見出し画像

Formsの複数回答の質問の答えをTeamsに投稿する方法

Power Automateの活用方法の1つに「Formsで回答してもらった結果をTeamsに投稿する」というものがあります。
簡単で、かつ、使い勝手が良いので私もよく活用していたのですが、今回「複数回答の質問」の答えを取得するのに手間取ったので備忘録です。

うまくいかなかった方法

私はアダプティブカードが好きなので、チャネルへの投稿はアダプティブカードを使います。
すると、いつも通り「動的なコンテンツ」で指定するだけでは、複数回答の質問ではエラーが出てしまいました。

うまくいかなかったフロー

解決方法①

一番簡単な方法です。
アダプティブカードを使用せずに、単に「チャットまたはチャネルでメッセージを投稿する」アクションを使えばエラーが出ません。
ただし、投稿には下記のように[]や"が入ります。

解決方法②

上記の投稿結果を見ると、["ライオン","パンダ"]の形で出力されていることが分かります。
なので、replace関数で[]と"を空白に置き換えれば「ライオン,パンダ」と出力されるようになります。

解決方法②のフロー

replece関数の部分は、下記をコピーし、■の部分に「動的なコンテンツ」を入れると設定できます。

replace(replace(replace(■,'[',''),']',''),'"','')

解決方法③

["ライオン","パンダ"]という形式をよく見てみると、配列の形になっています。
そこで、配列から文字列を取り出す方法にも挑戦してみました。

まずは、Apply to eachに「動的なコンテンツ」を入れてみたのですが、うまくいきませんでした。

うまくいかなかった方法

どうやら、動的なコンテンツで取得できる["ライオン","パンダ"]は、配列に見えますが文字列のようです。
そこで、json関数で配列に変換し、処理をしていきます。

フローは以下の通り。

解決方法③のフロー

Teamsに投稿されました。

一番後ろに「,」が入ってしまうのは、ご愛敬

さいごに

色々試した結果、Formsからの複数回答の質問の答えは、配列が文字列に変換された形で出力されているようです。
アダプティブカードはJSON形式で書かれているため、["犬","ライオン"]の形が途中に入るとエラーになってしまうのかな?
正直、この辺りは自信がないですが、とりあえず上記方法で解決できました。

補足

@MiTo60448639 さんにTwittterにてフォローいただきましたので、載せておきます。
さすがです。


いいなと思ったら応援しよう!